﻿2026-06-21T09:42:01.3528410Z ##[group]Run ./traceable-reqs check --json
2026-06-21T09:42:01.3529037Z [36;1m./traceable-reqs check --json[0m
2026-06-21T09:42:01.3541623Z shell: /usr/bin/bash -e {0}
2026-06-21T09:42:01.3542022Z ##[endgroup]
2026-06-21T09:42:01.3774845Z {
2026-06-21T09:42:01.3775813Z   "schemaVersion": 1,
2026-06-21T09:42:01.3776633Z   "summary": {
2026-06-21T09:42:01.3777310Z     "requirementCount": 276,
2026-06-21T09:42:01.3778145Z     "completeCount": 276,
2026-06-21T09:42:01.3778888Z     "incompleteCount": 0,
2026-06-21T09:42:01.3779700Z     "findingCount": 0
2026-06-21T09:42:01.3780378Z   },
2026-06-21T09:42:01.3780964Z   "requirements": [
2026-06-21T09:42:01.3781608Z     {
2026-06-21T09:42:01.3782218Z       "id": "REQ-API-1",
2026-06-21T09:42:01.3783143Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-21T09:42:01.3784228Z       "requiredStages": [
2026-06-21T09:42:01.3784958Z         "impl",
2026-06-21T09:42:01.3785568Z         "unit",
2026-06-21T09:42:01.3786188Z         "int"
2026-06-21T09:42:01.3786841Z       ],
2026-06-21T09:42:01.3787431Z       "stages": {
2026-06-21T09:42:01.3788066Z         "doc": {
2026-06-21T09:42:01.3788686Z           "complete": false,
2026-06-21T09:42:01.3789349Z           "evidence": []
2026-06-21T09:42:01.3789888Z         },
2026-06-21T09:42:01.3790379Z         "impl": {
2026-06-21T09:42:01.3790914Z           "complete": true,
2026-06-21T09:42:01.3791485Z           "evidence": [
2026-06-21T09:42:01.3792005Z             {
2026-06-21T09:42:01.3792543Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.3793223Z               "line": 15
2026-06-21T09:42:01.3793781Z             }
2026-06-21T09:42:01.3794261Z           ]
2026-06-21T09:42:01.3794749Z         },
2026-06-21T09:42:01.3795222Z         "int": {
2026-06-21T09:42:01.3797186Z           "complete": true,
2026-06-21T09:42:01.3797776Z           "evidence": [
2026-06-21T09:42:01.3798330Z             {
2026-06-21T09:42:01.3798907Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:42:01.3799703Z               "line": 13
2026-06-21T09:42:01.3800245Z             }
2026-06-21T09:42:01.3800720Z           ]
2026-06-21T09:42:01.3801197Z         },
2026-06-21T09:42:01.3801688Z         "unit": {
2026-06-21T09:42:01.3802212Z           "complete": true,
2026-06-21T09:42:01.3802786Z           "evidence": [
2026-06-21T09:42:01.3803315Z             {
2026-06-21T09:42:01.3803878Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.3804569Z               "line": 717
2026-06-21T09:42:01.3805118Z             },
2026-06-21T09:42:01.3805603Z             {
2026-06-21T09:42:01.3806153Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.3806826Z               "line": 804
2026-06-21T09:42:01.3807365Z             }
2026-06-21T09:42:01.3807848Z           ]
2026-06-21T09:42:01.3808328Z         }
2026-06-21T09:42:01.3808804Z       }
2026-06-21T09:42:01.3809352Z     },
2026-06-21T09:42:01.3809801Z     {
2026-06-21T09:42:01.3810287Z       "id": "REQ-API-2",
2026-06-21T09:42:01.3811123Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-21T09:42:01.3812049Z       "requiredStages": [
2026-06-21T09:42:01.3812605Z         "impl",
2026-06-21T09:42:01.3813270Z         "unit",
2026-06-21T09:42:01.3813952Z         "int"
2026-06-21T09:42:01.3814320Z       ],
2026-06-21T09:42:01.3814696Z       "stages": {
2026-06-21T09:42:01.3815063Z         "doc": {
2026-06-21T09:42:01.3815440Z           "complete": false,
2026-06-21T09:42:01.3815865Z           "evidence": []
2026-06-21T09:42:01.3816254Z         },
2026-06-21T09:42:01.3816595Z         "impl": {
2026-06-21T09:42:01.3816972Z           "complete": true,
2026-06-21T09:42:01.3817390Z           "evidence": [
2026-06-21T09:42:01.3817768Z             {
2026-06-21T09:42:01.3818179Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T09:42:01.3819073Z               "line": 17
2026-06-21T09:42:01.3819455Z             },
2026-06-21T09:42:01.3819789Z             {
2026-06-21T09:42:01.3820361Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.3820852Z               "line": 20
2026-06-21T09:42:01.3821222Z             },
2026-06-21T09:42:01.3821549Z             {
2026-06-21T09:42:01.3821936Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.3822422Z               "line": 142
2026-06-21T09:42:01.3822798Z             },
2026-06-21T09:42:01.3823132Z             {
2026-06-21T09:42:01.3823524Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.3824014Z               "line": 24
2026-06-21T09:42:01.3824383Z             },
2026-06-21T09:42:01.3824722Z             {
2026-06-21T09:42:01.3825108Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.3825590Z               "line": 41
2026-06-21T09:42:01.3825952Z             },
2026-06-21T09:42:01.3826285Z             {
2026-06-21T09:42:01.3826685Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.3827170Z               "line": 213
2026-06-21T09:42:01.3827546Z             },
2026-06-21T09:42:01.3827875Z             {
2026-06-21T09:42:01.3828251Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.3828734Z               "line": 255
2026-06-21T09:42:01.3829167Z             },
2026-06-21T09:42:01.3829500Z             {
2026-06-21T09:42:01.3829871Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.3830544Z               "line": 334
2026-06-21T09:42:01.3831079Z             },
2026-06-21T09:42:01.3831551Z             {
2026-06-21T09:42:01.3832109Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.3832791Z               "line": 397
2026-06-21T09:42:01.3833330Z             },
2026-06-21T09:42:01.3833808Z             {
2026-06-21T09:42:01.3834356Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.3835053Z               "line": 436
2026-06-21T09:42:01.3835587Z             },
2026-06-21T09:42:01.3836055Z             {
2026-06-21T09:42:01.3836598Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.3837283Z               "line": 17
2026-06-21T09:42:01.3837806Z             },
2026-06-21T09:42:01.3838298Z             {
2026-06-21T09:42:01.3838845Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.3839618Z               "line": 30
2026-06-21T09:42:01.3840155Z             },
2026-06-21T09:42:01.3840643Z             {
2026-06-21T09:42:01.3841200Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.3841868Z               "line": 63
2026-06-21T09:42:01.3842390Z             },
2026-06-21T09:42:01.3842871Z             {
2026-06-21T09:42:01.3843405Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.3844129Z               "line": 77
2026-06-21T09:42:01.3844515Z             }
2026-06-21T09:42:01.3844979Z           ]
2026-06-21T09:42:01.3845442Z         },
2026-06-21T09:42:01.3845851Z         "int": {
2026-06-21T09:42:01.3846343Z           "complete": true,
2026-06-21T09:42:01.3846824Z           "evidence": [
2026-06-21T09:42:01.3847250Z             {
2026-06-21T09:42:01.3847901Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:42:01.3848441Z               "line": 14
2026-06-21T09:42:01.3849076Z             },
2026-06-21T09:42:01.3849563Z             {
2026-06-21T09:42:01.3850103Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:42:01.3850662Z               "line": 187
2026-06-21T09:42:01.3851136Z             }
2026-06-21T09:42:01.3851569Z           ]
2026-06-21T09:42:01.3851979Z         },
2026-06-21T09:42:01.3852438Z         "unit": {
2026-06-21T09:42:01.3852889Z           "complete": true,
2026-06-21T09:42:01.3887645Z           "evidence": [
2026-06-21T09:42:01.3888068Z             {
2026-06-21T09:42:01.3888474Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T09:42:01.3889284Z               "line": 82
2026-06-21T09:42:01.3889641Z             },
2026-06-21T09:42:01.3889974Z             {
2026-06-21T09:42:01.3890503Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.3890963Z               "line": 279
2026-06-21T09:42:01.3891326Z             },
2026-06-21T09:42:01.3891656Z             {
2026-06-21T09:42:01.3892038Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.3892503Z               "line": 709
2026-06-21T09:42:01.3892856Z             },
2026-06-21T09:42:01.3893180Z             {
2026-06-21T09:42:01.3893547Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.3894006Z               "line": 720
2026-06-21T09:42:01.3894368Z             },
2026-06-21T09:42:01.3894687Z             {
2026-06-21T09:42:01.3895053Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.3895513Z               "line": 873
2026-06-21T09:42:01.3895871Z             },
2026-06-21T09:42:01.3896196Z             {
2026-06-21T09:42:01.3896572Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.3897025Z               "line": 919
2026-06-21T09:42:01.3897387Z             },
2026-06-21T09:42:01.3897702Z             {
2026-06-21T09:42:01.3898058Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.3898510Z               "line": 143
2026-06-21T09:42:01.3898853Z             },
2026-06-21T09:42:01.3899234Z             {
2026-06-21T09:42:01.3899616Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.3900065Z               "line": 187
2026-06-21T09:42:01.3900422Z             }
2026-06-21T09:42:01.3900758Z           ]
2026-06-21T09:42:01.3901067Z         }
2026-06-21T09:42:01.3901387Z       }
2026-06-21T09:42:01.3901696Z     },
2026-06-21T09:42:01.3902011Z     {
2026-06-21T09:42:01.3902331Z       "id": "REQ-API-3",
2026-06-21T09:42:01.3902783Z       "title": "commune/signoff are file-drops, not commands",
2026-06-21T09:42:01.3903285Z       "requiredStages": [
2026-06-21T09:42:01.3903661Z         "impl",
2026-06-21T09:42:01.3903999Z         "unit",
2026-06-21T09:42:01.3904333Z         "int"
2026-06-21T09:42:01.3904661Z       ],
2026-06-21T09:42:01.3904980Z       "stages": {
2026-06-21T09:42:01.3905313Z         "doc": {
2026-06-21T09:42:01.3905661Z           "complete": false,
2026-06-21T09:42:01.3906049Z           "evidence": []
2026-06-21T09:42:01.3906417Z         },
2026-06-21T09:42:01.3906737Z         "impl": {
2026-06-21T09:42:01.3907085Z           "complete": true,
2026-06-21T09:42:01.3907457Z           "evidence": [
2026-06-21T09:42:01.3907805Z             {
2026-06-21T09:42:01.3908180Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:42:01.3908633Z               "line": 27
2026-06-21T09:42:01.3909046Z             },
2026-06-21T09:42:01.3909389Z             {
2026-06-21T09:42:01.3909766Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.3910228Z               "line": 566
2026-06-21T09:42:01.3910630Z             }
2026-06-21T09:42:01.3910945Z           ]
2026-06-21T09:42:01.3911257Z         },
2026-06-21T09:42:01.3911575Z         "int": {
2026-06-21T09:42:01.3911904Z           "complete": true,
2026-06-21T09:42:01.3912290Z           "evidence": [
2026-06-21T09:42:01.3912647Z             {
2026-06-21T09:42:01.3913019Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:42:01.3913478Z               "line": 261
2026-06-21T09:42:01.3913840Z             }
2026-06-21T09:42:01.3914153Z           ]
2026-06-21T09:42:01.3914463Z         },
2026-06-21T09:42:01.3914768Z         "unit": {
2026-06-21T09:42:01.3915107Z           "complete": true,
2026-06-21T09:42:01.3915474Z           "evidence": [
2026-06-21T09:42:01.3915827Z             {
2026-06-21T09:42:01.3916184Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:42:01.3916638Z               "line": 280
2026-06-21T09:42:01.3916987Z             },
2026-06-21T09:42:01.3917307Z             {
2026-06-21T09:42:01.3917669Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.3918236Z               "line": 948
2026-06-21T09:42:01.3918585Z             }
2026-06-21T09:42:01.3919060Z           ]
2026-06-21T09:42:01.3919829Z         }
2026-06-21T09:42:01.3920222Z       }
2026-06-21T09:42:01.3920588Z     },
2026-06-21T09:42:01.3920950Z     {
2026-06-21T09:42:01.3921341Z       "id": "REQ-API-4",
2026-06-21T09:42:01.3924593Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-21T09:42:01.3927423Z       "requiredStages": [
2026-06-21T09:42:01.3927867Z         "doc",
2026-06-21T09:42:01.3928286Z         "impl",
2026-06-21T09:42:01.3928634Z         "unit"
2026-06-21T09:42:01.3928939Z       ],
2026-06-21T09:42:01.3929320Z       "stages": {
2026-06-21T09:42:01.3929639Z         "doc": {
2026-06-21T09:42:01.3930027Z           "complete": true,
2026-06-21T09:42:01.3930453Z           "evidence": [
2026-06-21T09:42:01.3930839Z             {
2026-06-21T09:42:01.3931215Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.3931663Z               "line": 149
2026-06-21T09:42:01.3932055Z             }
2026-06-21T09:42:01.3932420Z           ]
2026-06-21T09:42:01.3932772Z         },
2026-06-21T09:42:01.3933134Z         "impl": {
2026-06-21T09:42:01.3933519Z           "complete": true,
2026-06-21T09:42:01.3933939Z           "evidence": [
2026-06-21T09:42:01.3934340Z             {
2026-06-21T09:42:01.3934735Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.3935225Z               "line": 484
2026-06-21T09:42:01.3935574Z             }
2026-06-21T09:42:01.3935894Z           ]
2026-06-21T09:42:01.3936194Z         },
2026-06-21T09:42:01.3936504Z         "int": {
2026-06-21T09:42:01.3936843Z           "complete": false,
2026-06-21T09:42:01.3937228Z           "evidence": []
2026-06-21T09:42:01.3937574Z         },
2026-06-21T09:42:01.3937883Z         "unit": {
2026-06-21T09:42:01.3938217Z           "complete": true,
2026-06-21T09:42:01.3938584Z           "evidence": [
2026-06-21T09:42:01.3938927Z             {
2026-06-21T09:42:01.3939725Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.3940342Z               "line": 657
2026-06-21T09:42:01.3940798Z             },
2026-06-21T09:42:01.3941198Z             {
2026-06-21T09:42:01.3941656Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.3942204Z               "line": 681
2026-06-21T09:42:01.3942635Z             },
2026-06-21T09:42:01.3943018Z             {
2026-06-21T09:42:01.3943450Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.3943994Z               "line": 705
2026-06-21T09:42:01.3944456Z             }
2026-06-21T09:42:01.3944839Z           ]
2026-06-21T09:42:01.3945202Z         }
2026-06-21T09:42:01.3945572Z       }
2026-06-21T09:42:01.3945943Z     },
2026-06-21T09:42:01.3946300Z     {
2026-06-21T09:42:01.3946686Z       "id": "REQ-ARCH-1",
2026-06-21T09:42:01.3947216Z       "title": "Many small acyclically-layered crates",
2026-06-21T09:42:01.3947798Z       "requiredStages": [
2026-06-21T09:42:01.3948252Z         "impl"
2026-06-21T09:42:01.3948652Z       ],
2026-06-21T09:42:01.3949097Z       "stages": {
2026-06-21T09:42:01.3949435Z         "doc": {
2026-06-21T09:42:01.3949773Z           "complete": false,
2026-06-21T09:42:01.3950155Z           "evidence": []
2026-06-21T09:42:01.3950498Z         },
2026-06-21T09:42:01.3950811Z         "impl": {
2026-06-21T09:42:01.3951138Z           "complete": true,
2026-06-21T09:42:01.3951524Z           "evidence": [
2026-06-21T09:42:01.3951864Z             {
2026-06-21T09:42:01.3952221Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-21T09:42:01.3952865Z               "line": 18
2026-06-21T09:42:01.3953209Z             },
2026-06-21T09:42:01.3953620Z             {
2026-06-21T09:42:01.3953981Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-21T09:42:01.3954426Z               "line": 12
2026-06-21T09:42:01.3954774Z             },
2026-06-21T09:42:01.3955094Z             {
2026-06-21T09:42:01.3955456Z               "path": "crates/spt-store/src/lib.rs",
2026-06-21T09:42:01.3955899Z               "line": 12
2026-06-21T09:42:01.3956250Z             }
2026-06-21T09:42:01.3956579Z           ]
2026-06-21T09:42:01.3956894Z         },
2026-06-21T09:42:01.3957218Z         "int": {
2026-06-21T09:42:01.3957585Z           "complete": false,
2026-06-21T09:42:01.3957973Z           "evidence": []
2026-06-21T09:42:01.3958335Z         },
2026-06-21T09:42:01.3958648Z         "unit": {
2026-06-21T09:42:01.3959112Z           "complete": false,
2026-06-21T09:42:01.3959518Z           "evidence": []
2026-06-21T09:42:01.3959881Z         }
2026-06-21T09:42:01.3960181Z       }
2026-06-21T09:42:01.3960477Z     },
2026-06-21T09:42:01.3960792Z     {
2026-06-21T09:42:01.3961117Z       "id": "REQ-ARCH-2",
2026-06-21T09:42:01.3961594Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-21T09:42:01.3962119Z       "requiredStages": [
2026-06-21T09:42:01.3962481Z         "impl"
2026-06-21T09:42:01.3962886Z       ],
2026-06-21T09:42:01.3963464Z       "stages": {
2026-06-21T09:42:01.3963882Z         "doc": {
2026-06-21T09:42:01.3964351Z           "complete": false,
2026-06-21T09:42:01.3964838Z           "evidence": []
2026-06-21T09:42:01.3965262Z         },
2026-06-21T09:42:01.3965758Z         "impl": {
2026-06-21T09:42:01.3966187Z           "complete": true,
2026-06-21T09:42:01.3966688Z           "evidence": [
2026-06-21T09:42:01.3967144Z             {
2026-06-21T09:42:01.3967613Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-21T09:42:01.3968194Z               "line": 18
2026-06-21T09:42:01.3968650Z             }
2026-06-21T09:42:01.3969259Z           ]
2026-06-21T09:42:01.3969701Z         },
2026-06-21T09:42:01.3970112Z         "int": {
2026-06-21T09:42:01.3970593Z           "complete": false,
2026-06-21T09:42:01.3971061Z           "evidence": []
2026-06-21T09:42:01.3971494Z         },
2026-06-21T09:42:01.3971946Z         "unit": {
2026-06-21T09:42:01.3972393Z           "complete": false,
2026-06-21T09:42:01.3972925Z           "evidence": []
2026-06-21T09:42:01.3973370Z         }
2026-06-21T09:42:01.3973746Z       }
2026-06-21T09:42:01.3974199Z     },
2026-06-21T09:42:01.3974604Z     {
2026-06-21T09:42:01.3975031Z       "id": "REQ-ARCH-3",
2026-06-21T09:42:01.3975684Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-21T09:42:01.3976389Z       "requiredStages": [
2026-06-21T09:42:01.3976928Z         "impl",
2026-06-21T09:42:01.3977342Z         "unit"
2026-06-21T09:42:01.3977766Z       ],
2026-06-21T09:42:01.3978206Z       "stages": {
2026-06-21T09:42:01.3978639Z         "doc": {
2026-06-21T09:42:01.3979269Z           "complete": false,
2026-06-21T09:42:01.3979744Z           "evidence": []
2026-06-21T09:42:01.3980171Z         },
2026-06-21T09:42:01.3980687Z         "impl": {
2026-06-21T09:42:01.3981101Z           "complete": true,
2026-06-21T09:42:01.3981617Z           "evidence": [
2026-06-21T09:42:01.3982050Z             {
2026-06-21T09:42:01.3982497Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T09:42:01.3983095Z               "line": 34
2026-06-21T09:42:01.3983530Z             },
2026-06-21T09:42:01.3983977Z             {
2026-06-21T09:42:01.3984479Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T09:42:01.3985016Z               "line": 41
2026-06-21T09:42:01.3985500Z             }
2026-06-21T09:42:01.3985906Z           ]
2026-06-21T09:42:01.3986339Z         },
2026-06-21T09:42:01.3986802Z         "int": {
2026-06-21T09:42:01.3987288Z           "complete": false,
2026-06-21T09:42:01.3987869Z           "evidence": []
2026-06-21T09:42:01.3988517Z         },
2026-06-21T09:42:01.3989085Z         "unit": {
2026-06-21T09:42:01.3989586Z           "complete": true,
2026-06-21T09:42:01.3990223Z           "evidence": [
2026-06-21T09:42:01.3990704Z             {
2026-06-21T09:42:01.3991184Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T09:42:01.3991709Z               "line": 51
2026-06-21T09:42:01.3992258Z             },
2026-06-21T09:42:01.3992661Z             {
2026-06-21T09:42:01.3993181Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T09:42:01.3993727Z               "line": 71
2026-06-21T09:42:01.3994162Z             },
2026-06-21T09:42:01.3994642Z             {
2026-06-21T09:42:01.3995101Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T09:42:01.3995661Z               "line": 83
2026-06-21T09:42:01.3996161Z             }
2026-06-21T09:42:01.3996551Z           ]
2026-06-21T09:42:01.3997015Z         }
2026-06-21T09:42:01.3997414Z       }
2026-06-21T09:42:01.3997838Z     },
2026-06-21T09:42:01.3998245Z     {
2026-06-21T09:42:01.3998649Z       "id": "REQ-ARCH-4",
2026-06-21T09:42:01.3999420Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-21T09:42:01.4000088Z       "requiredStages": [
2026-06-21T09:42:01.4000589Z         "impl",
2026-06-21T09:42:01.4001019Z         "unit"
2026-06-21T09:42:01.4001463Z       ],
2026-06-21T09:42:01.4001906Z       "stages": {
2026-06-21T09:42:01.4002330Z         "doc": {
2026-06-21T09:42:01.4002766Z           "complete": false,
2026-06-21T09:42:01.4003280Z           "evidence": []
2026-06-21T09:42:01.4003713Z         },
2026-06-21T09:42:01.4004150Z         "impl": {
2026-06-21T09:42:01.4004592Z           "complete": true,
2026-06-21T09:42:01.4005070Z           "evidence": [
2026-06-21T09:42:01.4005522Z             {
2026-06-21T09:42:01.4005986Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4006563Z               "line": 165
2026-06-21T09:42:01.4007050Z             },
2026-06-21T09:42:01.4007492Z             {
2026-06-21T09:42:01.4007965Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4008509Z               "line": 188
2026-06-21T09:42:01.4009074Z             },
2026-06-21T09:42:01.4009533Z             {
2026-06-21T09:42:01.4009976Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4010624Z               "line": 208
2026-06-21T09:42:01.4011054Z             },
2026-06-21T09:42:01.4011509Z             {
2026-06-21T09:42:01.4011970Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4012491Z               "line": 223
2026-06-21T09:42:01.4013002Z             },
2026-06-21T09:42:01.4013406Z             {
2026-06-21T09:42:01.4013883Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4014479Z               "line": 273
2026-06-21T09:42:01.4014905Z             }
2026-06-21T09:42:01.4015377Z           ]
2026-06-21T09:42:01.4015772Z         },
2026-06-21T09:42:01.4016198Z         "int": {
2026-06-21T09:42:01.4016654Z           "complete": false,
2026-06-21T09:42:01.4017113Z           "evidence": []
2026-06-21T09:42:01.4017606Z         },
2026-06-21T09:42:01.4018043Z         "unit": {
2026-06-21T09:42:01.4018507Z           "complete": true,
2026-06-21T09:42:01.4019094Z           "evidence": [
2026-06-21T09:42:01.4019559Z             {
2026-06-21T09:42:01.4020060Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4020598Z               "line": 334
2026-06-21T09:42:01.4021047Z             },
2026-06-21T09:42:01.4021513Z             {
2026-06-21T09:42:01.4022018Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4022583Z               "line": 344
2026-06-21T09:42:01.4023037Z             },
2026-06-21T09:42:01.4023432Z             {
2026-06-21T09:42:01.4023938Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4024486Z               "line": 355
2026-06-21T09:42:01.4024955Z             },
2026-06-21T09:42:01.4025441Z             {
2026-06-21T09:42:01.4026017Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4026638Z               "line": 366
2026-06-21T09:42:01.4027186Z             },
2026-06-21T09:42:01.4027611Z             {
2026-06-21T09:42:01.4028094Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4028632Z               "line": 378
2026-06-21T09:42:01.4029257Z             },
2026-06-21T09:42:01.4029715Z             {
2026-06-21T09:42:01.4030214Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4030786Z               "line": 391
2026-06-21T09:42:01.4031240Z             },
2026-06-21T09:42:01.4031712Z             {
2026-06-21T09:42:01.4032160Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4032700Z               "line": 402
2026-06-21T09:42:01.4033230Z             },
2026-06-21T09:42:01.4033653Z             {
2026-06-21T09:42:01.4040247Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4040736Z               "line": 419
2026-06-21T09:42:01.4041112Z             },
2026-06-21T09:42:01.4041427Z             {
2026-06-21T09:42:01.4041800Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.4042272Z               "line": 547
2026-06-21T09:42:01.4042629Z             }
2026-06-21T09:42:01.4042948Z           ]
2026-06-21T09:42:01.4043265Z         }
2026-06-21T09:42:01.4043575Z       }
2026-06-21T09:42:01.4043884Z     },
2026-06-21T09:42:01.4044185Z     {
2026-06-21T09:42:01.4044510Z       "id": "REQ-CLI-1",
2026-06-21T09:42:01.4046413Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-21T09:42:01.4048320Z       "requiredStages": [
2026-06-21T09:42:01.4048708Z         "impl",
2026-06-21T09:42:01.4049114Z         "unit"
2026-06-21T09:42:01.4049447Z       ],
2026-06-21T09:42:01.4049772Z       "stages": {
2026-06-21T09:42:01.4050111Z         "doc": {
2026-06-21T09:42:01.4050455Z           "complete": false,
2026-06-21T09:42:01.4050831Z           "evidence": []
2026-06-21T09:42:01.4051188Z         },
2026-06-21T09:42:01.4051507Z         "impl": {
2026-06-21T09:42:01.4051855Z           "complete": true,
2026-06-21T09:42:01.4052231Z           "evidence": [
2026-06-21T09:42:01.4052588Z             {
2026-06-21T09:42:01.4052947Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4053390Z               "line": 225
2026-06-21T09:42:01.4053755Z             },
2026-06-21T09:42:01.4054079Z             {
2026-06-21T09:42:01.4054426Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4054859Z               "line": 1093
2026-06-21T09:42:01.4055213Z             },
2026-06-21T09:42:01.4055533Z             {
2026-06-21T09:42:01.4055881Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4056323Z               "line": 1720
2026-06-21T09:42:01.4056687Z             },
2026-06-21T09:42:01.4057002Z             {
2026-06-21T09:42:01.4057354Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4057784Z               "line": 3124
2026-06-21T09:42:01.4058133Z             }
2026-06-21T09:42:01.4058443Z           ]
2026-06-21T09:42:01.4058758Z         },
2026-06-21T09:42:01.4059146Z         "int": {
2026-06-21T09:42:01.4059489Z           "complete": false,
2026-06-21T09:42:01.4059874Z           "evidence": []
2026-06-21T09:42:01.4060241Z         },
2026-06-21T09:42:01.4060541Z         "unit": {
2026-06-21T09:42:01.4060885Z           "complete": true,
2026-06-21T09:42:01.4061257Z           "evidence": [
2026-06-21T09:42:01.4061611Z             {
2026-06-21T09:42:01.4061967Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4062401Z               "line": 7947
2026-06-21T09:42:01.4062926Z             }
2026-06-21T09:42:01.4063250Z           ]
2026-06-21T09:42:01.4063556Z         }
2026-06-21T09:42:01.4063870Z       }
2026-06-21T09:42:01.4064268Z     },
2026-06-21T09:42:01.4064572Z     {
2026-06-21T09:42:01.4064896Z       "id": "REQ-CLI-2",
2026-06-21T09:42:01.4066226Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-21T09:42:01.4067585Z       "requiredStages": [
2026-06-21T09:42:01.4067953Z         "impl",
2026-06-21T09:42:01.4068282Z         "unit"
2026-06-21T09:42:01.4068592Z       ],
2026-06-21T09:42:01.4068907Z       "stages": {
2026-06-21T09:42:01.4069318Z         "doc": {
2026-06-21T09:42:01.4069664Z           "complete": false,
2026-06-21T09:42:01.4070059Z           "evidence": []
2026-06-21T09:42:01.4070415Z         },
2026-06-21T09:42:01.4070726Z         "impl": {
2026-06-21T09:42:01.4071064Z           "complete": true,
2026-06-21T09:42:01.4071440Z           "evidence": [
2026-06-21T09:42:01.4071793Z             {
2026-06-21T09:42:01.4072166Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4072641Z               "line": 414
2026-06-21T09:42:01.4072994Z             },
2026-06-21T09:42:01.4073309Z             {
2026-06-21T09:42:01.4073685Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T09:42:01.4074153Z               "line": 97
2026-06-21T09:42:01.4074501Z             },
2026-06-21T09:42:01.4074819Z             {
2026-06-21T09:42:01.4075185Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:42:01.4075641Z               "line": 256
2026-06-21T09:42:01.4076004Z             },
2026-06-21T09:42:01.4076319Z             {
2026-06-21T09:42:01.4076663Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4077091Z               "line": 434
2026-06-21T09:42:01.4077448Z             },
2026-06-21T09:42:01.4077761Z             {
2026-06-21T09:42:01.4078099Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4078522Z               "line": 1174
2026-06-21T09:42:01.4078890Z             },
2026-06-21T09:42:01.4079282Z             {
2026-06-21T09:42:01.4079635Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4080052Z               "line": 1958
2026-06-21T09:42:01.4080403Z             },
2026-06-21T09:42:01.4080732Z             {
2026-06-21T09:42:01.4081080Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4081491Z               "line": 2047
2026-06-21T09:42:01.4081858Z             },
2026-06-21T09:42:01.4082173Z             {
2026-06-21T09:42:01.4082516Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4082944Z               "line": 2108
2026-06-21T09:42:01.4083301Z             }
2026-06-21T09:42:01.4083611Z           ]
2026-06-21T09:42:01.4083921Z         },
2026-06-21T09:42:01.4084235Z         "int": {
2026-06-21T09:42:01.4084579Z           "complete": false,
2026-06-21T09:42:01.4084961Z           "evidence": []
2026-06-21T09:42:01.4085346Z         },
2026-06-21T09:42:01.4085716Z         "unit": {
2026-06-21T09:42:01.4086059Z           "complete": true,
2026-06-21T09:42:01.4086435Z           "evidence": [
2026-06-21T09:42:01.4086779Z             {
2026-06-21T09:42:01.4087155Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:42:01.4087619Z               "line": 338
2026-06-21T09:42:01.4087966Z             },
2026-06-21T09:42:01.4088288Z             {
2026-06-21T09:42:01.4088631Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4089141Z               "line": 8102
2026-06-21T09:42:01.4089508Z             }
2026-06-21T09:42:01.4089828Z           ]
2026-06-21T09:42:01.4090138Z         }
2026-06-21T09:42:01.4090439Z       }
2026-06-21T09:42:01.4090741Z     },
2026-06-21T09:42:01.4091044Z     {
2026-06-21T09:42:01.4091359Z       "id": "REQ-CLI-3",
2026-06-21T09:42:01.4092685Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-21T09:42:01.4094277Z       "requiredStages": [
2026-06-21T09:42:01.4094649Z         "impl",
2026-06-21T09:42:01.4094968Z         "unit"
2026-06-21T09:42:01.4095283Z       ],
2026-06-21T09:42:01.4095594Z       "stages": {
2026-06-21T09:42:01.4095930Z         "doc": {
2026-06-21T09:42:01.4096262Z           "complete": false,
2026-06-21T09:42:01.4096647Z           "evidence": []
2026-06-21T09:42:01.4097000Z         },
2026-06-21T09:42:01.4097319Z         "impl": {
2026-06-21T09:42:01.4097653Z           "complete": true,
2026-06-21T09:42:01.4098025Z           "evidence": [
2026-06-21T09:42:01.4098374Z             {
2026-06-21T09:42:01.4098734Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4099233Z               "line": 1087
2026-06-21T09:42:01.4099605Z             }
2026-06-21T09:42:01.4099924Z           ]
2026-06-21T09:42:01.4100235Z         },
2026-06-21T09:42:01.4100554Z         "int": {
2026-06-21T09:42:01.4100897Z           "complete": false,
2026-06-21T09:42:01.4101287Z           "evidence": []
2026-06-21T09:42:01.4101638Z         },
2026-06-21T09:42:01.4101953Z         "unit": {
2026-06-21T09:42:01.4102296Z           "complete": true,
2026-06-21T09:42:01.4102663Z           "evidence": [
2026-06-21T09:42:01.4103007Z             {
2026-06-21T09:42:01.4103354Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4103793Z               "line": 7912
2026-06-21T09:42:01.4104149Z             }
2026-06-21T09:42:01.4104459Z           ]
2026-06-21T09:42:01.4104774Z         }
2026-06-21T09:42:01.4105089Z       }
2026-06-21T09:42:01.4105432Z     },
2026-06-21T09:42:01.4105772Z     {
2026-06-21T09:42:01.4106101Z       "id": "REQ-CLI-4",
2026-06-21T09:42:01.4109641Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-21T09:42:01.4112698Z       "requiredStages": [],
2026-06-21T09:42:01.4113074Z       "stages": {
2026-06-21T09:42:01.4113409Z         "doc": {
2026-06-21T09:42:01.4113753Z           "complete": false,
2026-06-21T09:42:01.4114135Z           "evidence": []
2026-06-21T09:42:01.4114488Z         },
2026-06-21T09:42:01.4114806Z         "impl": {
2026-06-21T09:42:01.4115158Z           "complete": true,
2026-06-21T09:42:01.4115587Z           "evidence": [
2026-06-21T09:42:01.4115934Z             {
2026-06-21T09:42:01.4116288Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4116728Z               "line": 5678
2026-06-21T09:42:01.4117088Z             }
2026-06-21T09:42:01.4117406Z           ]
2026-06-21T09:42:01.4117716Z         },
2026-06-21T09:42:01.4118030Z         "int": {
2026-06-21T09:42:01.4118373Z           "complete": false,
2026-06-21T09:42:01.4118750Z           "evidence": []
2026-06-21T09:42:01.4119174Z         },
2026-06-21T09:42:01.4119480Z         "unit": {
2026-06-21T09:42:01.4119811Z           "complete": false,
2026-06-21T09:42:01.4120196Z           "evidence": []
2026-06-21T09:42:01.4120550Z         }
2026-06-21T09:42:01.4120865Z       }
2026-06-21T09:42:01.4121175Z     },
2026-06-21T09:42:01.4121475Z     {
2026-06-21T09:42:01.4121799Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-21T09:42:01.4126481Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-21T09:42:01.4131299Z       "requiredStages": [
2026-06-21T09:42:01.4131667Z         "impl",
2026-06-21T09:42:01.4132006Z         "unit"
2026-06-21T09:42:01.4132326Z       ],
2026-06-21T09:42:01.4132631Z       "stages": {
2026-06-21T09:42:01.4132963Z         "doc": {
2026-06-21T09:42:01.4133304Z           "complete": false,
2026-06-21T09:42:01.4133681Z           "evidence": []
2026-06-21T09:42:01.4134024Z         },
2026-06-21T09:42:01.4134343Z         "impl": {
2026-06-21T09:42:01.4134677Z           "complete": true,
2026-06-21T09:42:01.4135053Z           "evidence": [
2026-06-21T09:42:01.4135397Z             {
2026-06-21T09:42:01.4135758Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4136212Z               "line": 8
2026-06-21T09:42:01.4136565Z             },
2026-06-21T09:42:01.4136894Z             {
2026-06-21T09:42:01.4137251Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4137685Z               "line": 51
2026-06-21T09:42:01.4138046Z             },
2026-06-21T09:42:01.4138358Z             {
2026-06-21T09:42:01.4138711Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4139651Z               "line": 82
2026-06-21T09:42:01.4140024Z             },
2026-06-21T09:42:01.4140348Z             {
2026-06-21T09:42:01.4140706Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4141140Z               "line": 229
2026-06-21T09:42:01.4141497Z             }
2026-06-21T09:42:01.4141812Z           ]
2026-06-21T09:42:01.4142118Z         },
2026-06-21T09:42:01.4142423Z         "int": {
2026-06-21T09:42:01.4142766Z           "complete": false,
2026-06-21T09:42:01.4143157Z           "evidence": []
2026-06-21T09:42:01.4143513Z         },
2026-06-21T09:42:01.4143820Z         "unit": {
2026-06-21T09:42:01.4144164Z           "complete": true,
2026-06-21T09:42:01.4144528Z           "evidence": [
2026-06-21T09:42:01.4144927Z             {
2026-06-21T09:42:01.4145275Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4145733Z               "line": 249
2026-06-21T09:42:01.4146087Z             },
2026-06-21T09:42:01.4146418Z             {
2026-06-21T09:42:01.4146767Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4147211Z               "line": 256
2026-06-21T09:42:01.4147563Z             },
2026-06-21T09:42:01.4147892Z             {
2026-06-21T09:42:01.4148231Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4148678Z               "line": 263
2026-06-21T09:42:01.4149096Z             },
2026-06-21T09:42:01.4149420Z             {
2026-06-21T09:42:01.4149773Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4150225Z               "line": 270
2026-06-21T09:42:01.4150579Z             },
2026-06-21T09:42:01.4150904Z             {
2026-06-21T09:42:01.4151256Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4151700Z               "line": 297
2026-06-21T09:42:01.4152048Z             },
2026-06-21T09:42:01.4152382Z             {
2026-06-21T09:42:01.4152883Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4153331Z               "line": 307
2026-06-21T09:42:01.4153785Z             },
2026-06-21T09:42:01.4154107Z             {
2026-06-21T09:42:01.4154453Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4154897Z               "line": 317
2026-06-21T09:42:01.4155249Z             },
2026-06-21T09:42:01.4155573Z             {
2026-06-21T09:42:01.4155945Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4156371Z               "line": 331
2026-06-21T09:42:01.4156743Z             },
2026-06-21T09:42:01.4157070Z             {
2026-06-21T09:42:01.4157423Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4157856Z               "line": 340
2026-06-21T09:42:01.4158199Z             },
2026-06-21T09:42:01.4158528Z             {
2026-06-21T09:42:01.4158892Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4159408Z               "line": 348
2026-06-21T09:42:01.4159770Z             }
2026-06-21T09:42:01.4160084Z           ]
2026-06-21T09:42:01.4160404Z         }
2026-06-21T09:42:01.4160723Z       }
2026-06-21T09:42:01.4161029Z     },
2026-06-21T09:42:01.4161339Z     {
2026-06-21T09:42:01.4161677Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-21T09:42:01.4172189Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-21T09:42:01.4178482Z       "requiredStages": [
2026-06-21T09:42:01.4178862Z         "impl",
2026-06-21T09:42:01.4179315Z         "unit"
2026-06-21T09:42:01.4179644Z       ],
2026-06-21T09:42:01.4179954Z       "stages": {
2026-06-21T09:42:01.4180300Z         "doc": {
2026-06-21T09:42:01.4180632Z           "complete": false,
2026-06-21T09:42:01.4181024Z           "evidence": []
2026-06-21T09:42:01.4181391Z         },
2026-06-21T09:42:01.4181710Z         "impl": {
2026-06-21T09:42:01.4182058Z           "complete": true,
2026-06-21T09:42:01.4182430Z           "evidence": [
2026-06-21T09:42:01.4182788Z             {
2026-06-21T09:42:01.4183168Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4183634Z               "line": 141
2026-06-21T09:42:01.4183982Z             },
2026-06-21T09:42:01.4184301Z             {
2026-06-21T09:42:01.4184649Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4185087Z               "line": 1376
2026-06-21T09:42:01.4185441Z             },
2026-06-21T09:42:01.4185759Z             {
2026-06-21T09:42:01.4186114Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4186544Z               "line": 2145
2026-06-21T09:42:01.4186911Z             },
2026-06-21T09:42:01.4187398Z             {
2026-06-21T09:42:01.4187741Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4188269Z               "line": 4368
2026-06-21T09:42:01.4188630Z             },
2026-06-21T09:42:01.4189012Z             {
2026-06-21T09:42:01.4189361Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4189800Z               "line": 4466
2026-06-21T09:42:01.4190156Z             },
2026-06-21T09:42:01.4190476Z             {
2026-06-21T09:42:01.4190828Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4191260Z               "line": 5257
2026-06-21T09:42:01.4191618Z             },
2026-06-21T09:42:01.4191933Z             {
2026-06-21T09:42:01.4192289Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4192737Z               "line": 39
2026-06-21T09:42:01.4193086Z             }
2026-06-21T09:42:01.4193410Z           ]
2026-06-21T09:42:01.4193723Z         },
2026-06-21T09:42:01.4194036Z         "int": {
2026-06-21T09:42:01.4194379Z           "complete": false,
2026-06-21T09:42:01.4194747Z           "evidence": []
2026-06-21T09:42:01.4195110Z         },
2026-06-21T09:42:01.4195768Z         "unit": {
2026-06-21T09:42:01.4256299Z           "complete": true,
2026-06-21T09:42:01.4256839Z           "evidence": [
2026-06-21T09:42:01.4257204Z             {
2026-06-21T09:42:01.4257569Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4258017Z               "line": 10272
2026-06-21T09:42:01.4258399Z             },
2026-06-21T09:42:01.4258723Z             {
2026-06-21T09:42:01.4259190Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4259651Z               "line": 281
2026-06-21T09:42:01.4260006Z             },
2026-06-21T09:42:01.4260326Z             {
2026-06-21T09:42:01.4260694Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4261156Z               "line": 358
2026-06-21T09:42:01.4261513Z             },
2026-06-21T09:42:01.4261842Z             {
2026-06-21T09:42:01.4262244Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4262696Z               "line": 381
2026-06-21T09:42:01.4263058Z             },
2026-06-21T09:42:01.4263373Z             {
2026-06-21T09:42:01.4263735Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:42:01.4264184Z               "line": 395
2026-06-21T09:42:01.4264537Z             }
2026-06-21T09:42:01.4264868Z           ]
2026-06-21T09:42:01.4265176Z         }
2026-06-21T09:42:01.4265490Z       }
2026-06-21T09:42:01.4265796Z     },
2026-06-21T09:42:01.4266125Z     {
2026-06-21T09:42:01.4266450Z       "id": "REQ-CONSENT-1",
2026-06-21T09:42:01.4268096Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-21T09:42:01.4269841Z       "requiredStages": [
2026-06-21T09:42:01.4270211Z         "impl",
2026-06-21T09:42:01.4270537Z         "unit"
2026-06-21T09:42:01.4270857Z       ],
2026-06-21T09:42:01.4271167Z       "stages": {
2026-06-21T09:42:01.4271501Z         "doc": {
2026-06-21T09:42:01.4271845Z           "complete": false,
2026-06-21T09:42:01.4272232Z           "evidence": []
2026-06-21T09:42:01.4272589Z         },
2026-06-21T09:42:01.4272913Z         "impl": {
2026-06-21T09:42:01.4273256Z           "complete": true,
2026-06-21T09:42:01.4273627Z           "evidence": [
2026-06-21T09:42:01.4273975Z             {
2026-06-21T09:42:01.4274346Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4274806Z               "line": 27
2026-06-21T09:42:01.4275153Z             },
2026-06-21T09:42:01.4275471Z             {
2026-06-21T09:42:01.4275842Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4276298Z               "line": 75
2026-06-21T09:42:01.4276647Z             },
2026-06-21T09:42:01.4277267Z             {
2026-06-21T09:42:01.4277635Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4278200Z               "line": 98
2026-06-21T09:42:01.4278545Z             },
2026-06-21T09:42:01.4278855Z             {
2026-06-21T09:42:01.4279314Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:42:01.4279771Z               "line": 82
2026-06-21T09:42:01.4280120Z             },
2026-06-21T09:42:01.4280434Z             {
2026-06-21T09:42:01.4280790Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:42:01.4281242Z               "line": 109
2026-06-21T09:42:01.4281595Z             },
2026-06-21T09:42:01.4281909Z             {
2026-06-21T09:42:01.4282281Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:42:01.4282730Z               "line": 127
2026-06-21T09:42:01.4283088Z             },
2026-06-21T09:42:01.4283403Z             {
2026-06-21T09:42:01.4283768Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:42:01.4284215Z               "line": 142
2026-06-21T09:42:01.4284573Z             },
2026-06-21T09:42:01.4284897Z             {
2026-06-21T09:42:01.4285250Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4285699Z               "line": 7048
2026-06-21T09:42:01.4286064Z             }
2026-06-21T09:42:01.4286378Z           ]
2026-06-21T09:42:01.4286692Z         },
2026-06-21T09:42:01.4287007Z         "int": {
2026-06-21T09:42:01.4287345Z           "complete": false,
2026-06-21T09:42:01.4287722Z           "evidence": []
2026-06-21T09:42:01.4288070Z         },
2026-06-21T09:42:01.4288390Z         "unit": {
2026-06-21T09:42:01.4288727Z           "complete": true,
2026-06-21T09:42:01.4289559Z           "evidence": [
2026-06-21T09:42:01.4289917Z             {
2026-06-21T09:42:01.4290294Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4290747Z               "line": 334
2026-06-21T09:42:01.4291100Z             },
2026-06-21T09:42:01.4291427Z             {
2026-06-21T09:42:01.4291797Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4292259Z               "line": 380
2026-06-21T09:42:01.4292612Z             },
2026-06-21T09:42:01.4292927Z             {
2026-06-21T09:42:01.4293300Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4293751Z               "line": 391
2026-06-21T09:42:01.4294103Z             },
2026-06-21T09:42:01.4294418Z             {
2026-06-21T09:42:01.4294785Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:42:01.4295229Z               "line": 165
2026-06-21T09:42:01.4295583Z             },
2026-06-21T09:42:01.4295907Z             {
2026-06-21T09:42:01.4296264Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:42:01.4296713Z               "line": 184
2026-06-21T09:42:01.4297070Z             },
2026-06-21T09:42:01.4297389Z             {
2026-06-21T09:42:01.4297748Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:42:01.4298196Z               "line": 204
2026-06-21T09:42:01.4298554Z             },
2026-06-21T09:42:01.4298873Z             {
2026-06-21T09:42:01.4299330Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4299772Z               "line": 8334
2026-06-21T09:42:01.4300134Z             }
2026-06-21T09:42:01.4300444Z           ]
2026-06-21T09:42:01.4300763Z         }
2026-06-21T09:42:01.4301069Z       }
2026-06-21T09:42:01.4301374Z     },
2026-06-21T09:42:01.4301684Z     {
2026-06-21T09:42:01.4302011Z       "id": "REQ-CONSENT-2",
2026-06-21T09:42:01.4303540Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-21T09:42:01.4305083Z       "requiredStages": [
2026-06-21T09:42:01.4305451Z         "impl",
2026-06-21T09:42:01.4305904Z         "unit"
2026-06-21T09:42:01.4306266Z       ],
2026-06-21T09:42:01.4306575Z       "stages": {
2026-06-21T09:42:01.4307004Z         "doc": {
2026-06-21T09:42:01.4307349Z           "complete": false,
2026-06-21T09:42:01.4307731Z           "evidence": []
2026-06-21T09:42:01.4308094Z         },
2026-06-21T09:42:01.4308409Z         "impl": {
2026-06-21T09:42:01.4308752Z           "complete": true,
2026-06-21T09:42:01.4309195Z           "evidence": [
2026-06-21T09:42:01.4309553Z             {
2026-06-21T09:42:01.4309928Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4310375Z               "line": 140
2026-06-21T09:42:01.4310728Z             },
2026-06-21T09:42:01.4311047Z             {
2026-06-21T09:42:01.4311409Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4311863Z               "line": 165
2026-06-21T09:42:01.4312216Z             },
2026-06-21T09:42:01.4312529Z             {
2026-06-21T09:42:01.4312889Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4313346Z               "line": 199
2026-06-21T09:42:01.4313698Z             },
2026-06-21T09:42:01.4314018Z             {
2026-06-21T09:42:01.4314386Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4314835Z               "line": 241
2026-06-21T09:42:01.4315182Z             },
2026-06-21T09:42:01.4315502Z             {
2026-06-21T09:42:01.4315868Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4316306Z               "line": 269
2026-06-21T09:42:01.4316650Z             },
2026-06-21T09:42:01.4316970Z             {
2026-06-21T09:42:01.4317333Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4317795Z               "line": 300
2026-06-21T09:42:01.4318143Z             },
2026-06-21T09:42:01.4318462Z             {
2026-06-21T09:42:01.4318820Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4319354Z               "line": 6839
2026-06-21T09:42:01.4319774Z             },
2026-06-21T09:42:01.4320094Z             {
2026-06-21T09:42:01.4320445Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4320868Z               "line": 6897
2026-06-21T09:42:01.4321226Z             }
2026-06-21T09:42:01.4321550Z           ]
2026-06-21T09:42:01.4321855Z         },
2026-06-21T09:42:01.4322160Z         "int": {
2026-06-21T09:42:01.4322509Z           "complete": false,
2026-06-21T09:42:01.4322898Z           "evidence": []
2026-06-21T09:42:01.4323244Z         },
2026-06-21T09:42:01.4323563Z         "unit": {
2026-06-21T09:42:01.4323901Z           "complete": true,
2026-06-21T09:42:01.4324277Z           "evidence": [
2026-06-21T09:42:01.4324626Z             {
2026-06-21T09:42:01.4325009Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4325451Z               "line": 419
2026-06-21T09:42:01.4325808Z             },
2026-06-21T09:42:01.4326123Z             {
2026-06-21T09:42:01.4326484Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4326963Z               "line": 436
2026-06-21T09:42:01.4327316Z             },
2026-06-21T09:42:01.4327635Z             {
2026-06-21T09:42:01.4328006Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4328464Z               "line": 472
2026-06-21T09:42:01.4328828Z             },
2026-06-21T09:42:01.4329215Z             {
2026-06-21T09:42:01.4329605Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.4329772Z               "line": 516
2026-06-21T09:42:01.4329919Z             },
2026-06-21T09:42:01.4330072Z             {
2026-06-21T09:42:01.4330257Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4330412Z               "line": 9614
2026-06-21T09:42:01.4330567Z             },
2026-06-21T09:42:01.4330727Z             {
2026-06-21T09:42:01.4330920Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4331072Z               "line": 9696
2026-06-21T09:42:01.4331222Z             }
2026-06-21T09:42:01.4331380Z           ]
2026-06-21T09:42:01.4331656Z         }
2026-06-21T09:42:01.4331800Z       }
2026-06-21T09:42:01.4331947Z     },
2026-06-21T09:42:01.4332200Z     {
2026-06-21T09:42:01.4332358Z       "id": "REQ-CONSENT-3",
2026-06-21T09:42:01.4335325Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-21T09:42:01.4335496Z       "requiredStages": [
2026-06-21T09:42:01.4335649Z         "doc",
2026-06-21T09:42:01.4335811Z         "impl",
2026-06-21T09:42:01.4335978Z         "unit",
2026-06-21T09:42:01.4336136Z         "int"
2026-06-21T09:42:01.4336288Z       ],
2026-06-21T09:42:01.4336449Z       "stages": {
2026-06-21T09:42:01.4336607Z         "doc": {
2026-06-21T09:42:01.4336768Z           "complete": true,
2026-06-21T09:42:01.4336936Z           "evidence": [
2026-06-21T09:42:01.4337087Z             {
2026-06-21T09:42:01.4337265Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.4337427Z               "line": 304
2026-06-21T09:42:01.4337584Z             }
2026-06-21T09:42:01.4337746Z           ]
2026-06-21T09:42:01.4337899Z         },
2026-06-21T09:42:01.4338056Z         "impl": {
2026-06-21T09:42:01.4338214Z           "complete": true,
2026-06-21T09:42:01.4338376Z           "evidence": [
2026-06-21T09:42:01.4338524Z             {
2026-06-21T09:42:01.4338742Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.4338897Z               "line": 123
2026-06-21T09:42:01.4339116Z             },
2026-06-21T09:42:01.4339277Z             {
2026-06-21T09:42:01.4339493Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.4339673Z               "line": 162
2026-06-21T09:42:01.4339826Z             },
2026-06-21T09:42:01.4339988Z             {
2026-06-21T09:42:01.4340199Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.4340361Z               "line": 291
2026-06-21T09:42:01.4340518Z             },
2026-06-21T09:42:01.4340676Z             {
2026-06-21T09:42:01.4340884Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.4341039Z               "line": 574
2026-06-21T09:42:01.4341190Z             },
2026-06-21T09:42:01.4341344Z             {
2026-06-21T09:42:01.4341551Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.4341723Z               "line": 824
2026-06-21T09:42:01.4341873Z             },
2026-06-21T09:42:01.4342031Z             {
2026-06-21T09:42:01.4342211Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4342384Z               "line": 6965
2026-06-21T09:42:01.4342540Z             }
2026-06-21T09:42:01.4342689Z           ]
2026-06-21T09:42:01.4342846Z         },
2026-06-21T09:42:01.4342994Z         "int": {
2026-06-21T09:42:01.4343151Z           "complete": true,
2026-06-21T09:42:01.4343314Z           "evidence": [
2026-06-21T09:42:01.4343471Z             {
2026-06-21T09:42:01.4343685Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T09:42:01.4343844Z               "line": 16
2026-06-21T09:42:01.4343995Z             }
2026-06-21T09:42:01.4344151Z           ]
2026-06-21T09:42:01.4344312Z         },
2026-06-21T09:42:01.4344463Z         "unit": {
2026-06-21T09:42:01.4344636Z           "complete": true,
2026-06-21T09:42:01.4344798Z           "evidence": [
2026-06-21T09:42:01.4344951Z             {
2026-06-21T09:42:01.4345156Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.4345317Z               "line": 1019
2026-06-21T09:42:01.4345481Z             },
2026-06-21T09:42:01.4345737Z             {
2026-06-21T09:42:01.4345942Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.4346233Z               "line": 1066
2026-06-21T09:42:01.4346381Z             },
2026-06-21T09:42:01.4346538Z             {
2026-06-21T09:42:01.4346744Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.4346914Z               "line": 1394
2026-06-21T09:42:01.4347076Z             }
2026-06-21T09:42:01.4347233Z           ]
2026-06-21T09:42:01.4347386Z         }
2026-06-21T09:42:01.4347539Z       }
2026-06-21T09:42:01.4347691Z     },
2026-06-21T09:42:01.4347839Z     {
2026-06-21T09:42:01.4348030Z       "id": "REQ-CONV-1",
2026-06-21T09:42:01.4350210Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-21T09:42:01.4350396Z       "requiredStages": [
2026-06-21T09:42:01.4350553Z         "impl",
2026-06-21T09:42:01.4350706Z         "unit"
2026-06-21T09:42:01.4350864Z       ],
2026-06-21T09:42:01.4351026Z       "stages": {
2026-06-21T09:42:01.4351163Z         "doc": {
2026-06-21T09:42:01.4351336Z           "complete": false,
2026-06-21T09:42:01.4351493Z           "evidence": []
2026-06-21T09:42:01.4351651Z         },
2026-06-21T09:42:01.4351798Z         "impl": {
2026-06-21T09:42:01.4351970Z           "complete": true,
2026-06-21T09:42:01.4352130Z           "evidence": [
2026-06-21T09:42:01.4352287Z             {
2026-06-21T09:42:01.4352505Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4352654Z               "line": 988
2026-06-21T09:42:01.4352800Z             },
2026-06-21T09:42:01.4352949Z             {
2026-06-21T09:42:01.4353164Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.4353316Z               "line": 94
2026-06-21T09:42:01.4353464Z             },
2026-06-21T09:42:01.4353621Z             {
2026-06-21T09:42:01.4353827Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.4353997Z               "line": 345
2026-06-21T09:42:01.4354142Z             },
2026-06-21T09:42:01.4354293Z             {
2026-06-21T09:42:01.4354504Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.4354655Z               "line": 387
2026-06-21T09:42:01.4354812Z             },
2026-06-21T09:42:01.4354957Z             {
2026-06-21T09:42:01.4355168Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.4355319Z               "line": 472
2026-06-21T09:42:01.4355478Z             },
2026-06-21T09:42:01.4355634Z             {
2026-06-21T09:42:01.4355825Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.4355982Z               "line": 667
2026-06-21T09:42:01.4356135Z             },
2026-06-21T09:42:01.4356292Z             {
2026-06-21T09:42:01.4356503Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.4356670Z               "line": 693
2026-06-21T09:42:01.4356831Z             },
2026-06-21T09:42:01.4356985Z             {
2026-06-21T09:42:01.4357218Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.4357385Z               "line": 369
2026-06-21T09:42:01.4357545Z             },
2026-06-21T09:42:01.4357689Z             {
2026-06-21T09:42:01.4357893Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T09:42:01.4358056Z               "line": 19
2026-06-21T09:42:01.4358203Z             }
2026-06-21T09:42:01.4358361Z           ]
2026-06-21T09:42:01.4358508Z         },
2026-06-21T09:42:01.4358666Z         "int": {
2026-06-21T09:42:01.4358828Z           "complete": false,
2026-06-21T09:42:01.4359043Z           "evidence": []
2026-06-21T09:42:01.4359301Z         },
2026-06-21T09:42:01.4359491Z         "unit": {
2026-06-21T09:42:01.4359667Z           "complete": true,
2026-06-21T09:42:01.4359919Z           "evidence": [
2026-06-21T09:42:01.4360079Z             {
2026-06-21T09:42:01.4360285Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.4360450Z               "line": 1263
2026-06-21T09:42:01.4360600Z             },
2026-06-21T09:42:01.4360750Z             {
2026-06-21T09:42:01.4360961Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T09:42:01.4361123Z               "line": 108
2026-06-21T09:42:01.4361280Z             },
2026-06-21T09:42:01.4361433Z             {
2026-06-21T09:42:01.4361648Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T09:42:01.4361815Z               "line": 134
2026-06-21T09:42:01.4361967Z             },
2026-06-21T09:42:01.4362116Z             {
2026-06-21T09:42:01.4362311Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T09:42:01.4362478Z               "line": 144
2026-06-21T09:42:01.4362653Z             }
2026-06-21T09:42:01.4362795Z           ]
2026-06-21T09:42:01.4362979Z         }
2026-06-21T09:42:01.4363128Z       }
2026-06-21T09:42:01.4363284Z     },
2026-06-21T09:42:01.4363433Z     {
2026-06-21T09:42:01.4363599Z       "id": "REQ-CONV-2",
2026-06-21T09:42:01.4365261Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-21T09:42:01.4365428Z       "requiredStages": [
2026-06-21T09:42:01.4365583Z         "impl",
2026-06-21T09:42:01.4365738Z         "unit"
2026-06-21T09:42:01.4365889Z       ],
2026-06-21T09:42:01.4366047Z       "stages": {
2026-06-21T09:42:01.4366209Z         "doc": {
2026-06-21T09:42:01.4366376Z           "complete": false,
2026-06-21T09:42:01.4366542Z           "evidence": []
2026-06-21T09:42:01.4366700Z         },
2026-06-21T09:42:01.4366857Z         "impl": {
2026-06-21T09:42:01.4367024Z           "complete": true,
2026-06-21T09:42:01.4367181Z           "evidence": [
2026-06-21T09:42:01.4367339Z             {
2026-06-21T09:42:01.4367550Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4367701Z               "line": 409
2026-06-21T09:42:01.4367860Z             },
2026-06-21T09:42:01.4368001Z             {
2026-06-21T09:42:01.4368225Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:42:01.4368387Z               "line": 119
2026-06-21T09:42:01.4368535Z             },
2026-06-21T09:42:01.4368692Z             {
2026-06-21T09:42:01.4368912Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.4369184Z               "line": 841
2026-06-21T09:42:01.4369345Z             },
2026-06-21T09:42:01.4369518Z             {
2026-06-21T09:42:01.4369731Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.4369894Z               "line": 852
2026-06-21T09:42:01.4370041Z             },
2026-06-21T09:42:01.4370194Z             {
2026-06-21T09:42:01.4370393Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.4370554Z               "line": 334
2026-06-21T09:42:01.4370710Z             },
2026-06-21T09:42:01.4370859Z             {
2026-06-21T09:42:01.4371044Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4371216Z               "line": 3074
2026-06-21T09:42:01.4371369Z             },
2026-06-21T09:42:01.4371521Z             {
2026-06-21T09:42:01.4371708Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4371879Z               "line": 3090
2026-06-21T09:42:01.4372027Z             },
2026-06-21T09:42:01.4372179Z             {
2026-06-21T09:42:01.4372367Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4372638Z               "line": 3170
2026-06-21T09:42:01.4372794Z             }
2026-06-21T09:42:01.4372943Z           ]
2026-06-21T09:42:01.4373193Z         },
2026-06-21T09:42:01.4373356Z         "int": {
2026-06-21T09:42:01.4373520Z           "complete": false,
2026-06-21T09:42:01.4373688Z           "evidence": []
2026-06-21T09:42:01.4373844Z         },
2026-06-21T09:42:01.4373988Z         "unit": {
2026-06-21T09:42:01.4374145Z           "complete": true,
2026-06-21T09:42:01.4374308Z           "evidence": [
2026-06-21T09:42:01.4374464Z             {
2026-06-21T09:42:01.4374675Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.4374826Z               "line": 889
2026-06-21T09:42:01.4374980Z             },
2026-06-21T09:42:01.4375132Z             {
2026-06-21T09:42:01.4375333Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.4375495Z               "line": 1014
2026-06-21T09:42:01.4375653Z             },
2026-06-21T09:42:01.4375798Z             {
2026-06-21T09:42:01.4376026Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:42:01.4376178Z               "line": 215
2026-06-21T09:42:01.4376336Z             }
2026-06-21T09:42:01.4376487Z           ]
2026-06-21T09:42:01.4376646Z         }
2026-06-21T09:42:01.4376797Z       }
2026-06-21T09:42:01.4376945Z     },
2026-06-21T09:42:01.4377103Z     {
2026-06-21T09:42:01.4377269Z       "id": "REQ-DAEMON-1",
2026-06-21T09:42:01.4377570Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-21T09:42:01.4377732Z       "requiredStages": [
2026-06-21T09:42:01.4377890Z         "impl",
2026-06-21T09:42:01.4378042Z         "unit",
2026-06-21T09:42:01.4378196Z         "int"
2026-06-21T09:42:01.4378347Z       ],
2026-06-21T09:42:01.4378492Z       "stages": {
2026-06-21T09:42:01.4378652Z         "doc": {
2026-06-21T09:42:01.4378809Z           "complete": false,
2026-06-21T09:42:01.4379032Z           "evidence": []
2026-06-21T09:42:01.4379181Z         },
2026-06-21T09:42:01.4379342Z         "impl": {
2026-06-21T09:42:01.4379510Z           "complete": true,
2026-06-21T09:42:01.4379667Z           "evidence": [
2026-06-21T09:42:01.4379825Z             {
2026-06-21T09:42:01.4380035Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4380215Z               "line": 229
2026-06-21T09:42:01.4380369Z             },
2026-06-21T09:42:01.4380525Z             {
2026-06-21T09:42:01.4380727Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:42:01.4380882Z               "line": 12
2026-06-21T09:42:01.4381040Z             },
2026-06-21T09:42:01.4381190Z             {
2026-06-21T09:42:01.4381400Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4381561Z               "line": 16
2026-06-21T09:42:01.4381710Z             },
2026-06-21T09:42:01.4381862Z             {
2026-06-21T09:42:01.4382063Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4382229Z               "line": 309
2026-06-21T09:42:01.4382382Z             },
2026-06-21T09:42:01.4382539Z             {
2026-06-21T09:42:01.4382749Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4382912Z               "line": 24
2026-06-21T09:42:01.4383073Z             },
2026-06-21T09:42:01.4383222Z             {
2026-06-21T09:42:01.4383436Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4383594Z               "line": 262
2026-06-21T09:42:01.4390357Z             },
2026-06-21T09:42:01.4390576Z             {
2026-06-21T09:42:01.4390823Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4391028Z               "line": 279
2026-06-21T09:42:01.4391181Z             },
2026-06-21T09:42:01.4391334Z             {
2026-06-21T09:42:01.4391538Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4391697Z               "line": 356
2026-06-21T09:42:01.4391850Z             },
2026-06-21T09:42:01.4392008Z             {
2026-06-21T09:42:01.4392222Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4392533Z               "line": 670
2026-06-21T09:42:01.4392693Z             },
2026-06-21T09:42:01.4392947Z             {
2026-06-21T09:42:01.4393147Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T09:42:01.4393309Z               "line": 15
2026-06-21T09:42:01.4393458Z             },
2026-06-21T09:42:01.4393618Z             {
2026-06-21T09:42:01.4393811Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.4393976Z               "line": 241
2026-06-21T09:42:01.4394116Z             },
2026-06-21T09:42:01.4394267Z             {
2026-06-21T09:42:01.4394467Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T09:42:01.4394622Z               "line": 13
2026-06-21T09:42:01.4394784Z             },
2026-06-21T09:42:01.4394932Z             {
2026-06-21T09:42:01.4395137Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.4395289Z               "line": 382
2026-06-21T09:42:01.4395447Z             },
2026-06-21T09:42:01.4395604Z             {
2026-06-21T09:42:01.4395800Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.4395961Z               "line": 494
2026-06-21T09:42:01.4396124Z             }
2026-06-21T09:42:01.4396285Z           ]
2026-06-21T09:42:01.4396439Z         },
2026-06-21T09:42:01.4396591Z         "int": {
2026-06-21T09:42:01.4396759Z           "complete": true,
2026-06-21T09:42:01.4396914Z           "evidence": [
2026-06-21T09:42:01.4397062Z             {
2026-06-21T09:42:01.4397351Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T09:42:01.4397508Z               "line": 2
2026-06-21T09:42:01.4397675Z             },
2026-06-21T09:42:01.4397827Z             {
2026-06-21T09:42:01.4398099Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T09:42:01.4398267Z               "line": 16
2026-06-21T09:42:01.4398418Z             },
2026-06-21T09:42:01.4398566Z             {
2026-06-21T09:42:01.4398814Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-21T09:42:01.4399057Z               "line": 12
2026-06-21T09:42:01.4399206Z             },
2026-06-21T09:42:01.4399362Z             {
2026-06-21T09:42:01.4399583Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-21T09:42:01.4399743Z               "line": 12
2026-06-21T09:42:01.4399882Z             },
2026-06-21T09:42:01.4400034Z             {
2026-06-21T09:42:01.4400264Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T09:42:01.4400415Z               "line": 44
2026-06-21T09:42:01.4400574Z             }
2026-06-21T09:42:01.4400716Z           ]
2026-06-21T09:42:01.4400869Z         },
2026-06-21T09:42:01.4401021Z         "unit": {
2026-06-21T09:42:01.4401174Z           "complete": true,
2026-06-21T09:42:01.4401345Z           "evidence": [
2026-06-21T09:42:01.4401494Z             {
2026-06-21T09:42:01.4401702Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:42:01.4401871Z               "line": 285
2026-06-21T09:42:01.4402017Z             },
2026-06-21T09:42:01.4402164Z             {
2026-06-21T09:42:01.4402367Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:42:01.4402525Z               "line": 293
2026-06-21T09:42:01.4402677Z             },
2026-06-21T09:42:01.4402830Z             {
2026-06-21T09:42:01.4403034Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:42:01.4403202Z               "line": 309
2026-06-21T09:42:01.4403349Z             },
2026-06-21T09:42:01.4403497Z             {
2026-06-21T09:42:01.4403703Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:42:01.4403865Z               "line": 317
2026-06-21T09:42:01.4404023Z             },
2026-06-21T09:42:01.4404174Z             {
2026-06-21T09:42:01.4404390Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4404546Z               "line": 659
2026-06-21T09:42:01.4404695Z             },
2026-06-21T09:42:01.4404984Z             {
2026-06-21T09:42:01.4405196Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4405449Z               "line": 729
2026-06-21T09:42:01.4405601Z             },
2026-06-21T09:42:01.4405760Z             {
2026-06-21T09:42:01.4405965Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4406130Z               "line": 1211
2026-06-21T09:42:01.4406289Z             },
2026-06-21T09:42:01.4406445Z             {
2026-06-21T09:42:01.4406651Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4406817Z               "line": 1248
2026-06-21T09:42:01.4406966Z             },
2026-06-21T09:42:01.4407113Z             {
2026-06-21T09:42:01.4407314Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4407483Z               "line": 1271
2026-06-21T09:42:01.4407626Z             },
2026-06-21T09:42:01.4407777Z             {
2026-06-21T09:42:01.4407983Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4408144Z               "line": 1300
2026-06-21T09:42:01.4408302Z             },
2026-06-21T09:42:01.4408454Z             {
2026-06-21T09:42:01.4408664Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4408812Z               "line": 1348
2026-06-21T09:42:01.4409040Z             },
2026-06-21T09:42:01.4409189Z             {
2026-06-21T09:42:01.4409393Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4409579Z               "line": 1391
2026-06-21T09:42:01.4409732Z             },
2026-06-21T09:42:01.4409885Z             {
2026-06-21T09:42:01.4410076Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T09:42:01.4410237Z               "line": 106
2026-06-21T09:42:01.4410384Z             },
2026-06-21T09:42:01.4410543Z             {
2026-06-21T09:42:01.4410742Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T09:42:01.4410895Z               "line": 132
2026-06-21T09:42:01.4411052Z             },
2026-06-21T09:42:01.4411195Z             {
2026-06-21T09:42:01.4411420Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.4411586Z               "line": 530
2026-06-21T09:42:01.4411739Z             }
2026-06-21T09:42:01.4411892Z           ]
2026-06-21T09:42:01.4412045Z         }
2026-06-21T09:42:01.4412200Z       }
2026-06-21T09:42:01.4412355Z     },
2026-06-21T09:42:01.4412510Z     {
2026-06-21T09:42:01.4412682Z       "id": "REQ-DAEMON-2",
2026-06-21T09:42:01.4412927Z       "title": "Broker/brain split for seamless self-update",
2026-06-21T09:42:01.4413095Z       "requiredStages": [
2026-06-21T09:42:01.4413251Z         "impl",
2026-06-21T09:42:01.4413409Z         "unit",
2026-06-21T09:42:01.4413561Z         "int"
2026-06-21T09:42:01.4413710Z       ],
2026-06-21T09:42:01.4413866Z       "stages": {
2026-06-21T09:42:01.4414020Z         "doc": {
2026-06-21T09:42:01.4414190Z           "complete": true,
2026-06-21T09:42:01.4414354Z           "evidence": [
2026-06-21T09:42:01.4414510Z             {
2026-06-21T09:42:01.4414706Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-21T09:42:01.4414878Z               "line": 250
2026-06-21T09:42:01.4415030Z             }
2026-06-21T09:42:01.4415169Z           ]
2026-06-21T09:42:01.4415327Z         },
2026-06-21T09:42:01.4415482Z         "impl": {
2026-06-21T09:42:01.4415662Z           "complete": true,
2026-06-21T09:42:01.4415818Z           "evidence": [
2026-06-21T09:42:01.4415976Z             {
2026-06-21T09:42:01.4416171Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.4416334Z               "line": 23
2026-06-21T09:42:01.4416481Z             },
2026-06-21T09:42:01.4416634Z             {
2026-06-21T09:42:01.4416839Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.4416996Z               "line": 844
2026-06-21T09:42:01.4417154Z             },
2026-06-21T09:42:01.4417310Z             {
2026-06-21T09:42:01.4417512Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.4417770Z               "line": 869
2026-06-21T09:42:01.4417921Z             },
2026-06-21T09:42:01.4418082Z             {
2026-06-21T09:42:01.4418365Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.4418524Z               "line": 1105
2026-06-21T09:42:01.4418694Z             },
2026-06-21T09:42:01.4418843Z             {
2026-06-21T09:42:01.4419125Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.4419286Z               "line": 32
2026-06-21T09:42:01.4419440Z             },
2026-06-21T09:42:01.4419586Z             {
2026-06-21T09:42:01.4419796Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.4419963Z               "line": 1185
2026-06-21T09:42:01.4420102Z             },
2026-06-21T09:42:01.4420264Z             {
2026-06-21T09:42:01.4420459Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.4420627Z               "line": 1987
2026-06-21T09:42:01.4420769Z             },
2026-06-21T09:42:01.4420925Z             {
2026-06-21T09:42:01.4421122Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.4421278Z               "line": 2274
2026-06-21T09:42:01.4421427Z             },
2026-06-21T09:42:01.4421578Z             {
2026-06-21T09:42:01.4421775Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T09:42:01.4421931Z               "line": 11
2026-06-21T09:42:01.4422080Z             },
2026-06-21T09:42:01.4422227Z             {
2026-06-21T09:42:01.4422418Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4422576Z               "line": 153
2026-06-21T09:42:01.4422728Z             },
2026-06-21T09:42:01.4422876Z             {
2026-06-21T09:42:01.4423076Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4423232Z               "line": 343
2026-06-21T09:42:01.4423392Z             },
2026-06-21T09:42:01.4423540Z             {
2026-06-21T09:42:01.4423736Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.4423888Z               "line": 13
2026-06-21T09:42:01.4424046Z             },
2026-06-21T09:42:01.4424184Z             {
2026-06-21T09:42:01.4424398Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4424561Z               "line": 27
2026-06-21T09:42:01.4424708Z             },
2026-06-21T09:42:01.4424861Z             {
2026-06-21T09:42:01.4425065Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4425233Z               "line": 173
2026-06-21T09:42:01.4425385Z             },
2026-06-21T09:42:01.4425539Z             {
2026-06-21T09:42:01.4425743Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4425910Z               "line": 682
2026-06-21T09:42:01.4426061Z             },
2026-06-21T09:42:01.4426208Z             {
2026-06-21T09:42:01.4426417Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4426584Z               "line": 903
2026-06-21T09:42:01.4426736Z             },
2026-06-21T09:42:01.4426894Z             {
2026-06-21T09:42:01.4427090Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4427246Z               "line": 1050
2026-06-21T09:42:01.4427399Z             },
2026-06-21T09:42:01.4427547Z             {
2026-06-21T09:42:01.4427758Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4427909Z               "line": 1139
2026-06-21T09:42:01.4428058Z             },
2026-06-21T09:42:01.4428209Z             {
2026-06-21T09:42:01.4428406Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4428566Z               "line": 1261
2026-06-21T09:42:01.4428723Z             },
2026-06-21T09:42:01.4428878Z             {
2026-06-21T09:42:01.4429159Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T09:42:01.4429322Z               "line": 10
2026-06-21T09:42:01.4429465Z             }
2026-06-21T09:42:01.4429618Z           ]
2026-06-21T09:42:01.4429771Z         },
2026-06-21T09:42:01.4430037Z         "int": {
2026-06-21T09:42:01.4430209Z           "complete": true,
2026-06-21T09:42:01.4430366Z           "evidence": [
2026-06-21T09:42:01.4430615Z             {
2026-06-21T09:42:01.4430824Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:42:01.4430982Z               "line": 17
2026-06-21T09:42:01.4431134Z             },
2026-06-21T09:42:01.4431292Z             {
2026-06-21T09:42:01.4431514Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T09:42:01.4431672Z               "line": 90
2026-06-21T09:42:01.4431829Z             },
2026-06-21T09:42:01.4431977Z             {
2026-06-21T09:42:01.4432197Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T09:42:01.4432358Z               "line": 110
2026-06-21T09:42:01.4432511Z             },
2026-06-21T09:42:01.4432663Z             {
2026-06-21T09:42:01.4432869Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T09:42:01.4433026Z               "line": 186
2026-06-21T09:42:01.4433180Z             },
2026-06-21T09:42:01.4433335Z             {
2026-06-21T09:42:01.4433546Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T09:42:01.4433716Z               "line": 309
2026-06-21T09:42:01.4433868Z             },
2026-06-21T09:42:01.4434014Z             {
2026-06-21T09:42:01.4434230Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T09:42:01.4434386Z               "line": 128
2026-06-21T09:42:01.4434535Z             },
2026-06-21T09:42:01.4434686Z             {
2026-06-21T09:42:01.4434887Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T09:42:01.4435039Z               "line": 59
2026-06-21T09:42:01.4435192Z             }
2026-06-21T09:42:01.4435345Z           ]
2026-06-21T09:42:01.4435497Z         },
2026-06-21T09:42:01.4435654Z         "unit": {
2026-06-21T09:42:01.4435821Z           "complete": true,
2026-06-21T09:42:01.4435984Z           "evidence": [
2026-06-21T09:42:01.4436164Z             {
2026-06-21T09:42:01.4436357Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T09:42:01.4436522Z               "line": 62
2026-06-21T09:42:01.4436679Z             },
2026-06-21T09:42:01.4436834Z             {
2026-06-21T09:42:01.4437039Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T09:42:01.4437205Z               "line": 76
2026-06-21T09:42:01.4437359Z             },
2026-06-21T09:42:01.4437511Z             {
2026-06-21T09:42:01.4437707Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T09:42:01.4437863Z               "line": 88
2026-06-21T09:42:01.4438027Z             },
2026-06-21T09:42:01.4438178Z             {
2026-06-21T09:42:01.4438379Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:42:01.4438541Z               "line": 347
2026-06-21T09:42:01.4438685Z             },
2026-06-21T09:42:01.4438831Z             {
2026-06-21T09:42:01.4439097Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.4439255Z               "line": 873
2026-06-21T09:42:01.4439414Z             },
2026-06-21T09:42:01.4439567Z             {
2026-06-21T09:42:01.4439757Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.4439916Z               "line": 881
2026-06-21T09:42:01.4440067Z             },
2026-06-21T09:42:01.4440217Z             {
2026-06-21T09:42:01.4440420Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.4440588Z               "line": 898
2026-06-21T09:42:01.4440735Z             },
2026-06-21T09:42:01.4440889Z             {
2026-06-21T09:42:01.4441079Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.4441246Z               "line": 974
2026-06-21T09:42:01.4441394Z             },
2026-06-21T09:42:01.4441538Z             {
2026-06-21T09:42:01.4441757Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4441908Z               "line": 1370
2026-06-21T09:42:01.4442064Z             },
2026-06-21T09:42:01.4442214Z             {
2026-06-21T09:42:01.4442408Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4442786Z               "line": 1382
2026-06-21T09:42:01.4443052Z             },
2026-06-21T09:42:01.4443204Z             {
2026-06-21T09:42:01.4443416Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T09:42:01.4443581Z               "line": 110
2026-06-21T09:42:01.4443730Z             },
2026-06-21T09:42:01.4443881Z             {
2026-06-21T09:42:01.4444083Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T09:42:01.4444247Z               "line": 145
2026-06-21T09:42:01.4444405Z             }
2026-06-21T09:42:01.4444551Z           ]
2026-06-21T09:42:01.4444704Z         }
2026-06-21T09:42:01.4444851Z       }
2026-06-21T09:42:01.4445009Z     },
2026-06-21T09:42:01.4445156Z     {
2026-06-21T09:42:01.4445324Z       "id": "REQ-DAEMON-3",
2026-06-21T09:42:01.4445624Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-21T09:42:01.4445800Z       "requiredStages": [
2026-06-21T09:42:01.4445958Z         "impl",
2026-06-21T09:42:01.4446110Z         "unit",
2026-06-21T09:42:01.4446268Z         "int"
2026-06-21T09:42:01.4446415Z       ],
2026-06-21T09:42:01.4446568Z       "stages": {
2026-06-21T09:42:01.4446729Z         "doc": {
2026-06-21T09:42:01.4446897Z           "complete": false,
2026-06-21T09:42:01.4447058Z           "evidence": []
2026-06-21T09:42:01.4447210Z         },
2026-06-21T09:42:01.4447361Z         "impl": {
2026-06-21T09:42:01.4447527Z           "complete": true,
2026-06-21T09:42:01.4447685Z           "evidence": [
2026-06-21T09:42:01.4447846Z             {
2026-06-21T09:42:01.4448056Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4448219Z               "line": 14
2026-06-21T09:42:01.4448367Z             },
2026-06-21T09:42:01.4448515Z             {
2026-06-21T09:42:01.4448729Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T09:42:01.4448896Z               "line": 11
2026-06-21T09:42:01.4449125Z             },
2026-06-21T09:42:01.4449282Z             {
2026-06-21T09:42:01.4449479Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.4449639Z               "line": 305
2026-06-21T09:42:01.4449791Z             },
2026-06-21T09:42:01.4449937Z             {
2026-06-21T09:42:01.4450123Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4450276Z               "line": 1956
2026-06-21T09:42:01.4450428Z             },
2026-06-21T09:42:01.4450586Z             {
2026-06-21T09:42:01.4450762Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4450933Z               "line": 4235
2026-06-21T09:42:01.4451082Z             },
2026-06-21T09:42:01.4451229Z             {
2026-06-21T09:42:01.4451406Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4451558Z               "line": 4256
2026-06-21T09:42:01.4451716Z             }
2026-06-21T09:42:01.4451858Z           ]
2026-06-21T09:42:01.4452012Z         },
2026-06-21T09:42:01.4452168Z         "int": {
2026-06-21T09:42:01.4452341Z           "complete": true,
2026-06-21T09:42:01.4452511Z           "evidence": [
2026-06-21T09:42:01.4452654Z             {
2026-06-21T09:42:01.4452863Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:42:01.4453026Z               "line": 49
2026-06-21T09:42:01.4453182Z             },
2026-06-21T09:42:01.4453336Z             {
2026-06-21T09:42:01.4453530Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:42:01.4453699Z               "line": 487
2026-06-21T09:42:01.4453850Z             }
2026-06-21T09:42:01.4454009Z           ]
2026-06-21T09:42:01.4454160Z         },
2026-06-21T09:42:01.4454319Z         "unit": {
2026-06-21T09:42:01.4454479Z           "complete": true,
2026-06-21T09:42:01.4454644Z           "evidence": [
2026-06-21T09:42:01.4454808Z             {
2026-06-21T09:42:01.4455007Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4455172Z               "line": 1553
2026-06-21T09:42:01.4455321Z             },
2026-06-21T09:42:01.4455588Z             {
2026-06-21T09:42:01.4455768Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4456045Z               "line": 10715
2026-06-21T09:42:01.4456204Z             }
2026-06-21T09:42:01.4456355Z           ]
2026-06-21T09:42:01.4456513Z         }
2026-06-21T09:42:01.4456656Z       }
2026-06-21T09:42:01.4456814Z     },
2026-06-21T09:42:01.4456961Z     {
2026-06-21T09:42:01.4457133Z       "id": "REQ-DAEMON-4",
2026-06-21T09:42:01.4457347Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-21T09:42:01.4457515Z       "requiredStages": [
2026-06-21T09:42:01.4457680Z         "impl",
2026-06-21T09:42:01.4457833Z         "unit",
2026-06-21T09:42:01.4457988Z         "int"
2026-06-21T09:42:01.4458145Z       ],
2026-06-21T09:42:01.4458297Z       "stages": {
2026-06-21T09:42:01.4458456Z         "doc": {
2026-06-21T09:42:01.4458616Z           "complete": false,
2026-06-21T09:42:01.4458784Z           "evidence": []
2026-06-21T09:42:01.4458927Z         },
2026-06-21T09:42:01.4459184Z         "impl": {
2026-06-21T09:42:01.4459337Z           "complete": true,
2026-06-21T09:42:01.4459499Z           "evidence": [
2026-06-21T09:42:01.4459661Z             {
2026-06-21T09:42:01.4459875Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4460039Z               "line": 464
2026-06-21T09:42:01.4460190Z             },
2026-06-21T09:42:01.4460332Z             {
2026-06-21T09:42:01.4460540Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4460697Z               "line": 529
2026-06-21T09:42:01.4460850Z             },
2026-06-21T09:42:01.4460998Z             {
2026-06-21T09:42:01.4461207Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4461361Z               "line": 551
2026-06-21T09:42:01.4461512Z             }
2026-06-21T09:42:01.4461666Z           ]
2026-06-21T09:42:01.4461813Z         },
2026-06-21T09:42:01.4461971Z         "int": {
2026-06-21T09:42:01.4462123Z           "complete": true,
2026-06-21T09:42:01.4462295Z           "evidence": [
2026-06-21T09:42:01.4462447Z             {
2026-06-21T09:42:01.4462663Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T09:42:01.4462833Z               "line": 42
2026-06-21T09:42:01.4462982Z             }
2026-06-21T09:42:01.4463137Z           ]
2026-06-21T09:42:01.4463286Z         },
2026-06-21T09:42:01.4463432Z         "unit": {
2026-06-21T09:42:01.4463596Z           "complete": true,
2026-06-21T09:42:01.4463757Z           "evidence": [
2026-06-21T09:42:01.4463911Z             {
2026-06-21T09:42:01.4464114Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:42:01.4464278Z               "line": 428
2026-06-21T09:42:01.4464434Z             },
2026-06-21T09:42:01.4464593Z             {
2026-06-21T09:42:01.4464797Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4464963Z               "line": 957
2026-06-21T09:42:01.4465116Z             },
2026-06-21T09:42:01.4465264Z             {
2026-06-21T09:42:01.4465477Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4465632Z               "line": 1027
2026-06-21T09:42:01.4465795Z             },
2026-06-21T09:42:01.4465947Z             {
2026-06-21T09:42:01.4466163Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4466328Z               "line": 1057
2026-06-21T09:42:01.4466482Z             },
2026-06-21T09:42:01.4466633Z             {
2026-06-21T09:42:01.4466839Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4467006Z               "line": 1090
2026-06-21T09:42:01.4467154Z             }
2026-06-21T09:42:01.4467306Z           ]
2026-06-21T09:42:01.4467460Z         }
2026-06-21T09:42:01.4467606Z       }
2026-06-21T09:42:01.4467761Z     },
2026-06-21T09:42:01.4467897Z     {
2026-06-21T09:42:01.4468071Z       "id": "REQ-DAEMON-5",
2026-06-21T09:42:01.4470164Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-21T09:42:01.4470531Z       "requiredStages": [
2026-06-21T09:42:01.4470694Z         "impl",
2026-06-21T09:42:01.4470839Z         "unit"
2026-06-21T09:42:01.4470997Z       ],
2026-06-21T09:42:01.4471147Z       "stages": {
2026-06-21T09:42:01.4471296Z         "doc": {
2026-06-21T09:42:01.4471471Z           "complete": false,
2026-06-21T09:42:01.4471620Z           "evidence": []
2026-06-21T09:42:01.4471777Z         },
2026-06-21T09:42:01.4471930Z         "impl": {
2026-06-21T09:42:01.4472096Z           "complete": true,
2026-06-21T09:42:01.4472245Z           "evidence": [
2026-06-21T09:42:01.4472420Z             {
2026-06-21T09:42:01.4472635Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.4472802Z               "line": 476
2026-06-21T09:42:01.4472955Z             },
2026-06-21T09:42:01.4473113Z             {
2026-06-21T09:42:01.4473326Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.4473481Z               "line": 769
2026-06-21T09:42:01.4473631Z             },
2026-06-21T09:42:01.4473778Z             {
2026-06-21T09:42:01.4473993Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.4474146Z               "line": 782
2026-06-21T09:42:01.4474284Z             },
2026-06-21T09:42:01.4474433Z             {
2026-06-21T09:42:01.4474632Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.4474790Z               "line": 800
2026-06-21T09:42:01.4474947Z             },
2026-06-21T09:42:01.4475095Z             {
2026-06-21T09:42:01.4475348Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.4475496Z               "line": 841
2026-06-21T09:42:01.4475653Z             }
2026-06-21T09:42:01.4475806Z           ]
2026-06-21T09:42:01.4475957Z         },
2026-06-21T09:42:01.4476119Z         "int": {
2026-06-21T09:42:01.4476293Z           "complete": false,
2026-06-21T09:42:01.4476466Z           "evidence": []
2026-06-21T09:42:01.4476617Z         },
2026-06-21T09:42:01.4476770Z         "unit": {
2026-06-21T09:42:01.4476936Z           "complete": true,
2026-06-21T09:42:01.4477089Z           "evidence": [
2026-06-21T09:42:01.4477241Z             {
2026-06-21T09:42:01.4477437Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.4477589Z               "line": 1189
2026-06-21T09:42:01.4477738Z             },
2026-06-21T09:42:01.4477885Z             {
2026-06-21T09:42:01.4478085Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.4478254Z               "line": 1213
2026-06-21T09:42:01.4478405Z             },
2026-06-21T09:42:01.4478559Z             {
2026-06-21T09:42:01.4478762Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.4478919Z               "line": 1239
2026-06-21T09:42:01.4479136Z             }
2026-06-21T09:42:01.4479294Z           ]
2026-06-21T09:42:01.4479441Z         }
2026-06-21T09:42:01.4479595Z       }
2026-06-21T09:42:01.4479741Z     },
2026-06-21T09:42:01.4479891Z     {
2026-06-21T09:42:01.4480051Z       "id": "REQ-DAEMON-6",
2026-06-21T09:42:01.4482995Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-21T09:42:01.4483286Z       "requiredStages": [
2026-06-21T09:42:01.4483435Z         "impl",
2026-06-21T09:42:01.4483692Z         "unit"
2026-06-21T09:42:01.4483853Z       ],
2026-06-21T09:42:01.4484007Z       "stages": {
2026-06-21T09:42:01.4484168Z         "doc": {
2026-06-21T09:42:01.4484329Z           "complete": false,
2026-06-21T09:42:01.4484497Z           "evidence": []
2026-06-21T09:42:01.4484644Z         },
2026-06-21T09:42:01.4484792Z         "impl": {
2026-06-21T09:42:01.4484959Z           "complete": true,
2026-06-21T09:42:01.4485111Z           "evidence": [
2026-06-21T09:42:01.4485259Z             {
2026-06-21T09:42:01.4485469Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4485637Z               "line": 495
2026-06-21T09:42:01.4485774Z             },
2026-06-21T09:42:01.4485932Z             {
2026-06-21T09:42:01.4486131Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4486290Z               "line": 526
2026-06-21T09:42:01.4486450Z             },
2026-06-21T09:42:01.4486603Z             {
2026-06-21T09:42:01.4486815Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:42:01.4486978Z               "line": 55
2026-06-21T09:42:01.4487134Z             },
2026-06-21T09:42:01.4487283Z             {
2026-06-21T09:42:01.4487487Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:42:01.4487650Z               "line": 70
2026-06-21T09:42:01.4487792Z             },
2026-06-21T09:42:01.4487950Z             {
2026-06-21T09:42:01.4488136Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4488307Z               "line": 2020
2026-06-21T09:42:01.4488465Z             },
2026-06-21T09:42:01.4488608Z             {
2026-06-21T09:42:01.4488789Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4489008Z               "line": 2046
2026-06-21T09:42:01.4489162Z             }
2026-06-21T09:42:01.4489313Z           ]
2026-06-21T09:42:01.4489465Z         },
2026-06-21T09:42:01.4489625Z         "int": {
2026-06-21T09:42:01.4489787Z           "complete": false,
2026-06-21T09:42:01.4489959Z           "evidence": []
2026-06-21T09:42:01.4490102Z         },
2026-06-21T09:42:01.4490260Z         "unit": {
2026-06-21T09:42:01.4490417Z           "complete": true,
2026-06-21T09:42:01.4490579Z           "evidence": [
2026-06-21T09:42:01.4490741Z             {
2026-06-21T09:42:01.4490936Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:42:01.4491095Z               "line": 288
2026-06-21T09:42:01.4491251Z             },
2026-06-21T09:42:01.4491404Z             {
2026-06-21T09:42:01.4491628Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:42:01.4491814Z               "line": 299
2026-06-21T09:42:01.4491998Z             },
2026-06-21T09:42:01.4492182Z             {
2026-06-21T09:42:01.4492421Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:42:01.4492610Z               "line": 325
2026-06-21T09:42:01.4492803Z             },
2026-06-21T09:42:01.4492983Z             {
2026-06-21T09:42:01.4493207Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:42:01.4493403Z               "line": 351
2026-06-21T09:42:01.4493555Z             }
2026-06-21T09:42:01.4493699Z           ]
2026-06-21T09:42:01.4493856Z         }
2026-06-21T09:42:01.4494014Z       }
2026-06-21T09:42:01.4494165Z     },
2026-06-21T09:42:01.4494324Z     {
2026-06-21T09:42:01.4494504Z       "id": "REQ-DAEMON-7",
2026-06-21T09:42:01.4496602Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-21T09:42:01.4496768Z       "requiredStages": [
2026-06-21T09:42:01.4497029Z         "impl",
2026-06-21T09:42:01.4497182Z         "unit"
2026-06-21T09:42:01.4497441Z       ],
2026-06-21T09:42:01.4497600Z       "stages": {
2026-06-21T09:42:01.4497761Z         "doc": {
2026-06-21T09:42:01.4497924Z           "complete": false,
2026-06-21T09:42:01.4498085Z           "evidence": []
2026-06-21T09:42:01.4498233Z         },
2026-06-21T09:42:01.4498395Z         "impl": {
2026-06-21T09:42:01.4498562Z           "complete": true,
2026-06-21T09:42:01.4498720Z           "evidence": [
2026-06-21T09:42:01.4498868Z             {
2026-06-21T09:42:01.4499140Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4499296Z               "line": 545
2026-06-21T09:42:01.4499445Z             },
2026-06-21T09:42:01.4499593Z             {
2026-06-21T09:42:01.4499812Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.4499968Z               "line": 610
2026-06-21T09:42:01.4500125Z             },
2026-06-21T09:42:01.4500266Z             {
2026-06-21T09:42:01.4500472Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:42:01.4500642Z               "line": 89
2026-06-21T09:42:01.4500786Z             },
2026-06-21T09:42:01.4500933Z             {
2026-06-21T09:42:01.4501120Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4501282Z               "line": 1957
2026-06-21T09:42:01.4501434Z             }
2026-06-21T09:42:01.4501587Z           ]
2026-06-21T09:42:01.4501740Z         },
2026-06-21T09:42:01.4501887Z         "int": {
2026-06-21T09:42:01.4502055Z           "complete": false,
2026-06-21T09:42:01.4502217Z           "evidence": []
2026-06-21T09:42:01.4502365Z         },
2026-06-21T09:42:01.4502520Z         "unit": {
2026-06-21T09:42:01.4502691Z           "complete": true,
2026-06-21T09:42:01.4502851Z           "evidence": [
2026-06-21T09:42:01.4503005Z             {
2026-06-21T09:42:01.4503219Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:42:01.4503377Z               "line": 314
2026-06-21T09:42:01.4503534Z             },
2026-06-21T09:42:01.4503677Z             {
2026-06-21T09:42:01.4503883Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4504053Z               "line": 8102
2026-06-21T09:42:01.4504207Z             }
2026-06-21T09:42:01.4504364Z           ]
2026-06-21T09:42:01.4504512Z         }
2026-06-21T09:42:01.4504663Z       }
2026-06-21T09:42:01.4504813Z     },
2026-06-21T09:42:01.4504968Z     {
2026-06-21T09:42:01.4505137Z       "id": "REQ-DAEMON-8",
2026-06-21T09:42:01.4506604Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-21T09:42:01.4506791Z       "requiredStages": [
2026-06-21T09:42:01.4506937Z         "impl",
2026-06-21T09:42:01.4507096Z         "unit"
2026-06-21T09:42:01.4507247Z       ],
2026-06-21T09:42:01.4507406Z       "stages": {
2026-06-21T09:42:01.4507566Z         "doc": {
2026-06-21T09:42:01.4507738Z           "complete": false,
2026-06-21T09:42:01.4507902Z           "evidence": []
2026-06-21T09:42:01.4508045Z         },
2026-06-21T09:42:01.4508207Z         "impl": {
2026-06-21T09:42:01.4508370Z           "complete": true,
2026-06-21T09:42:01.4511595Z           "evidence": [
2026-06-21T09:42:01.4511808Z             {
2026-06-21T09:42:01.4512028Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4512196Z               "line": 445
2026-06-21T09:42:01.4512351Z             },
2026-06-21T09:42:01.4512501Z             {
2026-06-21T09:42:01.4512719Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:42:01.4512883Z               "line": 56
2026-06-21T09:42:01.4513028Z             }
2026-06-21T09:42:01.4513180Z           ]
2026-06-21T09:42:01.4513331Z         },
2026-06-21T09:42:01.4513474Z         "int": {
2026-06-21T09:42:01.4513803Z           "complete": false,
2026-06-21T09:42:01.4513961Z           "evidence": []
2026-06-21T09:42:01.4514208Z         },
2026-06-21T09:42:01.4514370Z         "unit": {
2026-06-21T09:42:01.4514533Z           "complete": true,
2026-06-21T09:42:01.4514690Z           "evidence": [
2026-06-21T09:42:01.4514838Z             {
2026-06-21T09:42:01.4515053Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:42:01.4515214Z               "line": 288
2026-06-21T09:42:01.4515368Z             },
2026-06-21T09:42:01.4515524Z             {
2026-06-21T09:42:01.4515726Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:42:01.4515890Z               "line": 325
2026-06-21T09:42:01.4516048Z             }
2026-06-21T09:42:01.4516195Z           ]
2026-06-21T09:42:01.4516344Z         }
2026-06-21T09:42:01.4516497Z       }
2026-06-21T09:42:01.4516649Z     },
2026-06-21T09:42:01.4516797Z     {
2026-06-21T09:42:01.4516968Z       "id": "REQ-DAEMON-9",
2026-06-21T09:42:01.4520556Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-21T09:42:01.4520746Z       "requiredStages": [
2026-06-21T09:42:01.4520909Z         "impl",
2026-06-21T09:42:01.4521073Z         "unit"
2026-06-21T09:42:01.4521226Z       ],
2026-06-21T09:42:01.4521390Z       "stages": {
2026-06-21T09:42:01.4521535Z         "doc": {
2026-06-21T09:42:01.4521700Z           "complete": false,
2026-06-21T09:42:01.4521859Z           "evidence": []
2026-06-21T09:42:01.4522011Z         },
2026-06-21T09:42:01.4522169Z         "impl": {
2026-06-21T09:42:01.4522321Z           "complete": true,
2026-06-21T09:42:01.4522493Z           "evidence": [
2026-06-21T09:42:01.4522641Z             {
2026-06-21T09:42:01.4522869Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4523022Z               "line": 276
2026-06-21T09:42:01.4523184Z             },
2026-06-21T09:42:01.4523347Z             {
2026-06-21T09:42:01.4523541Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.4523712Z               "line": 1236
2026-06-21T09:42:01.4523858Z             },
2026-06-21T09:42:01.4524015Z             {
2026-06-21T09:42:01.4524215Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4524373Z               "line": 197
2026-06-21T09:42:01.4524530Z             },
2026-06-21T09:42:01.4524674Z             {
2026-06-21T09:42:01.4524873Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4525027Z               "line": 344
2026-06-21T09:42:01.4525179Z             },
2026-06-21T09:42:01.4525327Z             {
2026-06-21T09:42:01.4525536Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4525704Z               "line": 381
2026-06-21T09:42:01.4525855Z             },
2026-06-21T09:42:01.4526010Z             {
2026-06-21T09:42:01.4526199Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4526371Z               "line": 2075
2026-06-21T09:42:01.4526527Z             }
2026-06-21T09:42:01.4526680Z           ]
2026-06-21T09:42:01.4526832Z         },
2026-06-21T09:42:01.4526981Z         "int": {
2026-06-21T09:42:01.4527151Z           "complete": false,
2026-06-21T09:42:01.4527314Z           "evidence": []
2026-06-21T09:42:01.4527471Z         },
2026-06-21T09:42:01.4527719Z         "unit": {
2026-06-21T09:42:01.4527882Z           "complete": true,
2026-06-21T09:42:01.4528039Z           "evidence": [
2026-06-21T09:42:01.4528268Z             {
2026-06-21T09:42:01.4528477Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4528634Z               "line": 1158
2026-06-21T09:42:01.4528785Z             },
2026-06-21T09:42:01.4528928Z             {
2026-06-21T09:42:01.4529204Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4529365Z               "line": 10580
2026-06-21T09:42:01.4529514Z             }
2026-06-21T09:42:01.4529670Z           ]
2026-06-21T09:42:01.4529815Z         }
2026-06-21T09:42:01.4529970Z       }
2026-06-21T09:42:01.4530120Z     },
2026-06-21T09:42:01.4530271Z     {
2026-06-21T09:42:01.4530429Z       "id": "REQ-DOCS-1",
2026-06-21T09:42:01.4530764Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-21T09:42:01.4530934Z       "requiredStages": [
2026-06-21T09:42:01.4531088Z         "doc",
2026-06-21T09:42:01.4531249Z         "impl"
2026-06-21T09:42:01.4531398Z       ],
2026-06-21T09:42:01.4531554Z       "stages": {
2026-06-21T09:42:01.4531705Z         "doc": {
2026-06-21T09:42:01.4531870Z           "complete": true,
2026-06-21T09:42:01.4532037Z           "evidence": [
2026-06-21T09:42:01.4532185Z             {
2026-06-21T09:42:01.4532381Z               "path": "docs-site/src/index.md",
2026-06-21T09:42:01.4532547Z               "line": 50
2026-06-21T09:42:01.4532701Z             }
2026-06-21T09:42:01.4532843Z           ]
2026-06-21T09:42:01.4532996Z         },
2026-06-21T09:42:01.4533148Z         "impl": {
2026-06-21T09:42:01.4533311Z           "complete": true,
2026-06-21T09:42:01.4533477Z           "evidence": [
2026-06-21T09:42:01.4533626Z             {
2026-06-21T09:42:01.4533835Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T09:42:01.4533993Z               "line": 12
2026-06-21T09:42:01.4534148Z             },
2026-06-21T09:42:01.4534301Z             {
2026-06-21T09:42:01.4534498Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.4534662Z               "line": 14
2026-06-21T09:42:01.4534827Z             }
2026-06-21T09:42:01.4534981Z           ]
2026-06-21T09:42:01.4535128Z         },
2026-06-21T09:42:01.4535282Z         "int": {
2026-06-21T09:42:01.4535452Z           "complete": false,
2026-06-21T09:42:01.4535615Z           "evidence": []
2026-06-21T09:42:01.4535772Z         },
2026-06-21T09:42:01.4535926Z         "unit": {
2026-06-21T09:42:01.4536091Z           "complete": false,
2026-06-21T09:42:01.4536255Z           "evidence": []
2026-06-21T09:42:01.4536411Z         }
2026-06-21T09:42:01.4536570Z       }
2026-06-21T09:42:01.4536721Z     },
2026-06-21T09:42:01.4536870Z     {
2026-06-21T09:42:01.4537030Z       "id": "REQ-DOCS-2",
2026-06-21T09:42:01.4537302Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-21T09:42:01.4537474Z       "requiredStages": [
2026-06-21T09:42:01.4537631Z         "doc",
2026-06-21T09:42:01.4537794Z         "int"
2026-06-21T09:42:01.4537946Z       ],
2026-06-21T09:42:01.4538103Z       "stages": {
2026-06-21T09:42:01.4538255Z         "doc": {
2026-06-21T09:42:01.4538408Z           "complete": true,
2026-06-21T09:42:01.4538574Z           "evidence": [
2026-06-21T09:42:01.4538718Z             {
2026-06-21T09:42:01.4539101Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-21T09:42:01.4539256Z               "line": 3
2026-06-21T09:42:01.4539413Z             },
2026-06-21T09:42:01.4539563Z             {
2026-06-21T09:42:01.4539807Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-21T09:42:01.4539968Z               "line": 3
2026-06-21T09:42:01.4540117Z             },
2026-06-21T09:42:01.4540269Z             {
2026-06-21T09:42:01.4540479Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T09:42:01.4540646Z               "line": 3
2026-06-21T09:42:01.4540794Z             }
2026-06-21T09:42:01.4541052Z           ]
2026-06-21T09:42:01.4541203Z         },
2026-06-21T09:42:01.4541357Z         "impl": {
2026-06-21T09:42:01.4541518Z           "complete": false,
2026-06-21T09:42:01.4541770Z           "evidence": []
2026-06-21T09:42:01.4541930Z         },
2026-06-21T09:42:01.4542076Z         "int": {
2026-06-21T09:42:01.4542247Z           "complete": true,
2026-06-21T09:42:01.4542411Z           "evidence": [
2026-06-21T09:42:01.4542564Z             {
2026-06-21T09:42:01.4542774Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T09:42:01.4542937Z               "line": 14
2026-06-21T09:42:01.4543093Z             }
2026-06-21T09:42:01.4543252Z           ]
2026-06-21T09:42:01.4543394Z         },
2026-06-21T09:42:01.4543546Z         "unit": {
2026-06-21T09:42:01.4543704Z           "complete": false,
2026-06-21T09:42:01.4543861Z           "evidence": []
2026-06-21T09:42:01.4544009Z         }
2026-06-21T09:42:01.4544162Z       }
2026-06-21T09:42:01.4544314Z     },
2026-06-21T09:42:01.4544462Z     {
2026-06-21T09:42:01.4544633Z       "id": "REQ-DOCS-3",
2026-06-21T09:42:01.4544955Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-21T09:42:01.4545126Z       "requiredStages": [
2026-06-21T09:42:01.4545275Z         "doc"
2026-06-21T09:42:01.4545421Z       ],
2026-06-21T09:42:01.4545579Z       "stages": {
2026-06-21T09:42:01.4545726Z         "doc": {
2026-06-21T09:42:01.4545899Z           "complete": true,
2026-06-21T09:42:01.4546055Z           "evidence": [
2026-06-21T09:42:01.4546209Z             {
2026-06-21T09:42:01.4546409Z               "path": "docs-site/src/index.md",
2026-06-21T09:42:01.4546575Z               "line": 42
2026-06-21T09:42:01.4546728Z             }
2026-06-21T09:42:01.4546885Z           ]
2026-06-21T09:42:01.4547043Z         },
2026-06-21T09:42:01.4547195Z         "impl": {
2026-06-21T09:42:01.4547368Z           "complete": false,
2026-06-21T09:42:01.4547533Z           "evidence": []
2026-06-21T09:42:01.4547685Z         },
2026-06-21T09:42:01.4547834Z         "int": {
2026-06-21T09:42:01.4548004Z           "complete": false,
2026-06-21T09:42:01.4548173Z           "evidence": []
2026-06-21T09:42:01.4548329Z         },
2026-06-21T09:42:01.4548487Z         "unit": {
2026-06-21T09:42:01.4548653Z           "complete": false,
2026-06-21T09:42:01.4548820Z           "evidence": []
2026-06-21T09:42:01.4549017Z         }
2026-06-21T09:42:01.4549169Z       }
2026-06-21T09:42:01.4549327Z     },
2026-06-21T09:42:01.4549473Z     {
2026-06-21T09:42:01.4549642Z       "id": "REQ-DOCS-4",
2026-06-21T09:42:01.4549968Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-21T09:42:01.4550142Z       "requiredStages": [
2026-06-21T09:42:01.4550290Z         "doc",
2026-06-21T09:42:01.4550452Z         "impl",
2026-06-21T09:42:01.4550610Z         "unit"
2026-06-21T09:42:01.4550758Z       ],
2026-06-21T09:42:01.4550915Z       "stages": {
2026-06-21T09:42:01.4551054Z         "doc": {
2026-06-21T09:42:01.4551226Z           "complete": true,
2026-06-21T09:42:01.4551392Z           "evidence": [
2026-06-21T09:42:01.4551550Z             {
2026-06-21T09:42:01.4551744Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-21T09:42:01.4551903Z               "line": 35
2026-06-21T09:42:01.4552059Z             }
2026-06-21T09:42:01.4552203Z           ]
2026-06-21T09:42:01.4552364Z         },
2026-06-21T09:42:01.4552518Z         "impl": {
2026-06-21T09:42:01.4552697Z           "complete": true,
2026-06-21T09:42:01.4552864Z           "evidence": [
2026-06-21T09:42:01.4553014Z             {
2026-06-21T09:42:01.4553239Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.4553386Z               "line": 746
2026-06-21T09:42:01.4553544Z             },
2026-06-21T09:42:01.4553691Z             {
2026-06-21T09:42:01.4553887Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.4554058Z               "line": 15
2026-06-21T09:42:01.4554211Z             }
2026-06-21T09:42:01.4554364Z           ]
2026-06-21T09:42:01.4554517Z         },
2026-06-21T09:42:01.4554804Z         "int": {
2026-06-21T09:42:01.4554965Z           "complete": false,
2026-06-21T09:42:01.4555221Z           "evidence": []
2026-06-21T09:42:01.4555369Z         },
2026-06-21T09:42:01.4555529Z         "unit": {
2026-06-21T09:42:01.4555705Z           "complete": true,
2026-06-21T09:42:01.4555867Z           "evidence": [
2026-06-21T09:42:01.4556024Z             {
2026-06-21T09:42:01.4556239Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.4556411Z               "line": 1682
2026-06-21T09:42:01.4556568Z             }
2026-06-21T09:42:01.4556721Z           ]
2026-06-21T09:42:01.4556882Z         }
2026-06-21T09:42:01.4557032Z       }
2026-06-21T09:42:01.4557188Z     },
2026-06-21T09:42:01.4557337Z     {
2026-06-21T09:42:01.4557508Z       "id": "REQ-DOCS-5",
2026-06-21T09:42:01.4557841Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-21T09:42:01.4558000Z       "requiredStages": [
2026-06-21T09:42:01.4558164Z         "impl",
2026-06-21T09:42:01.4558312Z         "int"
2026-06-21T09:42:01.4558470Z       ],
2026-06-21T09:42:01.4558623Z       "stages": {
2026-06-21T09:42:01.4558784Z         "doc": {
2026-06-21T09:42:01.4559037Z           "complete": false,
2026-06-21T09:42:01.4559190Z           "evidence": []
2026-06-21T09:42:01.4559343Z         },
2026-06-21T09:42:01.4559499Z         "impl": {
2026-06-21T09:42:01.4559667Z           "complete": true,
2026-06-21T09:42:01.4559829Z           "evidence": [
2026-06-21T09:42:01.4559982Z             {
2026-06-21T09:42:01.4560202Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.4560362Z               "line": 747
2026-06-21T09:42:01.4560509Z             },
2026-06-21T09:42:01.4560665Z             {
2026-06-21T09:42:01.4560860Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.4561013Z               "line": 113
2026-06-21T09:42:01.4561170Z             }
2026-06-21T09:42:01.4561318Z           ]
2026-06-21T09:42:01.4561476Z         },
2026-06-21T09:42:01.4561623Z         "int": {
2026-06-21T09:42:01.4561786Z           "complete": true,
2026-06-21T09:42:01.4561952Z           "evidence": [
2026-06-21T09:42:01.4562105Z             {
2026-06-21T09:42:01.4562295Z               "path": ".github/workflows/ci.yml",
2026-06-21T09:42:01.4562453Z               "line": 206
2026-06-21T09:42:01.4562610Z             },
2026-06-21T09:42:01.4562768Z             {
2026-06-21T09:42:01.4562977Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.4563136Z               "line": 1719
2026-06-21T09:42:01.4563281Z             }
2026-06-21T09:42:01.4563434Z           ]
2026-06-21T09:42:01.4563589Z         },
2026-06-21T09:42:01.4563741Z         "unit": {
2026-06-21T09:42:01.4563912Z           "complete": false,
2026-06-21T09:42:01.4564067Z           "evidence": []
2026-06-21T09:42:01.4564209Z         }
2026-06-21T09:42:01.4564362Z       }
2026-06-21T09:42:01.4564519Z     },
2026-06-21T09:42:01.4564672Z     {
2026-06-21T09:42:01.4564843Z       "id": "REQ-DOCS-6",
2026-06-21T09:42:01.4565373Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-21T09:42:01.4565539Z       "requiredStages": [
2026-06-21T09:42:01.4565702Z         "impl",
2026-06-21T09:42:01.4565853Z         "unit",
2026-06-21T09:42:01.4566015Z         "int"
2026-06-21T09:42:01.4566174Z       ],
2026-06-21T09:42:01.4566332Z       "stages": {
2026-06-21T09:42:01.4566489Z         "doc": {
2026-06-21T09:42:01.4566652Z           "complete": true,
2026-06-21T09:42:01.4566823Z           "evidence": [
2026-06-21T09:42:01.4566976Z             {
2026-06-21T09:42:01.4567210Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T09:42:01.4567376Z               "line": 4
2026-06-21T09:42:01.4567514Z             }
2026-06-21T09:42:01.4567676Z           ]
2026-06-21T09:42:01.4567829Z         },
2026-06-21T09:42:01.4567991Z         "impl": {
2026-06-21T09:42:01.4568154Z           "complete": true,
2026-06-21T09:42:01.4568425Z           "evidence": [
2026-06-21T09:42:01.4568583Z             {
2026-06-21T09:42:01.4568873Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4569135Z               "line": 5240
2026-06-21T09:42:01.4569293Z             }
2026-06-21T09:42:01.4569450Z           ]
2026-06-21T09:42:01.4569588Z         },
2026-06-21T09:42:01.4569745Z         "int": {
2026-06-21T09:42:01.4569922Z           "complete": true,
2026-06-21T09:42:01.4570074Z           "evidence": [
2026-06-21T09:42:01.4570246Z             {
2026-06-21T09:42:01.4570457Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T09:42:01.4570622Z               "line": 39
2026-06-21T09:42:01.4570777Z             }
2026-06-21T09:42:01.4570936Z           ]
2026-06-21T09:42:01.4571094Z         },
2026-06-21T09:42:01.4571249Z         "unit": {
2026-06-21T09:42:01.4571420Z           "complete": true,
2026-06-21T09:42:01.4571578Z           "evidence": [
2026-06-21T09:42:01.4571740Z             {
2026-06-21T09:42:01.4571916Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4572074Z               "line": 10742
2026-06-21T09:42:01.4572235Z             }
2026-06-21T09:42:01.4572389Z           ]
2026-06-21T09:42:01.4572541Z         }
2026-06-21T09:42:01.4572689Z       }
2026-06-21T09:42:01.4572851Z     },
2026-06-21T09:42:01.4573000Z     {
2026-06-21T09:42:01.4573170Z       "id": "REQ-ELEVATE-1",
2026-06-21T09:42:01.4577828Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-21T09:42:01.4578017Z       "requiredStages": [
2026-06-21T09:42:01.4578171Z         "doc",
2026-06-21T09:42:01.4578322Z         "impl",
2026-06-21T09:42:01.4578472Z         "unit"
2026-06-21T09:42:01.4578623Z       ],
2026-06-21T09:42:01.4578772Z       "stages": {
2026-06-21T09:42:01.4578923Z         "doc": {
2026-06-21T09:42:01.4579176Z           "complete": true,
2026-06-21T09:42:01.4579341Z           "evidence": [
2026-06-21T09:42:01.4579491Z             {
2026-06-21T09:42:01.4579661Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.4579829Z               "line": 687
2026-06-21T09:42:01.4579985Z             }
2026-06-21T09:42:01.4580143Z           ]
2026-06-21T09:42:01.4580310Z         },
2026-06-21T09:42:01.4580463Z         "impl": {
2026-06-21T09:42:01.4580639Z           "complete": true,
2026-06-21T09:42:01.4580796Z           "evidence": [
2026-06-21T09:42:01.4580954Z             {
2026-06-21T09:42:01.4581134Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4581302Z               "line": 3572
2026-06-21T09:42:01.4581459Z             },
2026-06-21T09:42:01.4581610Z             {
2026-06-21T09:42:01.4581804Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4581966Z               "line": 3617
2026-06-21T09:42:01.4582114Z             },
2026-06-21T09:42:01.4582271Z             {
2026-06-21T09:42:01.4582448Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4582611Z               "line": 3679
2026-06-21T09:42:01.4582757Z             },
2026-06-21T09:42:01.4582911Z             {
2026-06-21T09:42:01.4583220Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.4583392Z               "line": 92
2026-06-21T09:42:01.4583631Z             },
2026-06-21T09:42:01.4583787Z             {
2026-06-21T09:42:01.4583988Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.4584146Z               "line": 148
2026-06-21T09:42:01.4584298Z             }
2026-06-21T09:42:01.4584444Z           ]
2026-06-21T09:42:01.4584601Z         },
2026-06-21T09:42:01.4584761Z         "int": {
2026-06-21T09:42:01.4584929Z           "complete": false,
2026-06-21T09:42:01.4585095Z           "evidence": []
2026-06-21T09:42:01.4585249Z         },
2026-06-21T09:42:01.4585414Z         "unit": {
2026-06-21T09:42:01.4585582Z           "complete": true,
2026-06-21T09:42:01.4585749Z           "evidence": [
2026-06-21T09:42:01.4585901Z             {
2026-06-21T09:42:01.4586097Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.4586268Z               "line": 442
2026-06-21T09:42:01.4586417Z             },
2026-06-21T09:42:01.4586587Z             {
2026-06-21T09:42:01.4586784Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.4586954Z               "line": 460
2026-06-21T09:42:01.4587116Z             }
2026-06-21T09:42:01.4587266Z           ]
2026-06-21T09:42:01.4587419Z         }
2026-06-21T09:42:01.4587571Z       }
2026-06-21T09:42:01.4587720Z     },
2026-06-21T09:42:01.4587877Z     {
2026-06-21T09:42:01.4588078Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-21T09:42:01.4590784Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-21T09:42:01.4590971Z       "requiredStages": [
2026-06-21T09:42:01.4591127Z         "doc",
2026-06-21T09:42:01.4591286Z         "impl",
2026-06-21T09:42:01.4591437Z         "unit"
2026-06-21T09:42:01.4591596Z       ],
2026-06-21T09:42:01.4591752Z       "stages": {
2026-06-21T09:42:01.4591911Z         "doc": {
2026-06-21T09:42:01.4592076Z           "complete": true,
2026-06-21T09:42:01.4592247Z           "evidence": [
2026-06-21T09:42:01.4592398Z             {
2026-06-21T09:42:01.4592564Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.4592721Z               "line": 711
2026-06-21T09:42:01.4592875Z             }
2026-06-21T09:42:01.4593026Z           ]
2026-06-21T09:42:01.4593176Z         },
2026-06-21T09:42:01.4593336Z         "impl": {
2026-06-21T09:42:01.4593495Z           "complete": true,
2026-06-21T09:42:01.4593670Z           "evidence": [
2026-06-21T09:42:01.4593819Z             {
2026-06-21T09:42:01.4594009Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4594167Z               "line": 1721
2026-06-21T09:42:01.4594324Z             },
2026-06-21T09:42:01.4594482Z             {
2026-06-21T09:42:01.4594667Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4594830Z               "line": 3125
2026-06-21T09:42:01.4594985Z             },
2026-06-21T09:42:01.4595142Z             {
2026-06-21T09:42:01.4595321Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4595499Z               "line": 3134
2026-06-21T09:42:01.4595670Z             }
2026-06-21T09:42:01.4595823Z           ]
2026-06-21T09:42:01.4595979Z         },
2026-06-21T09:42:01.4596133Z         "int": {
2026-06-21T09:42:01.4596304Z           "complete": false,
2026-06-21T09:42:01.4596466Z           "evidence": []
2026-06-21T09:42:01.4596614Z         },
2026-06-21T09:42:01.4596767Z         "unit": {
2026-06-21T09:42:01.4597044Z           "complete": true,
2026-06-21T09:42:01.4597206Z           "evidence": [
2026-06-21T09:42:01.4597387Z             {
2026-06-21T09:42:01.4597662Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4597826Z               "line": 7950
2026-06-21T09:42:01.4597974Z             },
2026-06-21T09:42:01.4598132Z             {
2026-06-21T09:42:01.4598309Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4598479Z               "line": 7991
2026-06-21T09:42:01.4598628Z             }
2026-06-21T09:42:01.4598780Z           ]
2026-06-21T09:42:01.4598938Z         }
2026-06-21T09:42:01.4599142Z       }
2026-06-21T09:42:01.4599301Z     },
2026-06-21T09:42:01.4599443Z     {
2026-06-21T09:42:01.4599630Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-21T09:42:01.4606529Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-21T09:42:01.4606731Z       "requiredStages": [
2026-06-21T09:42:01.4606888Z         "doc",
2026-06-21T09:42:01.4607045Z         "impl",
2026-06-21T09:42:01.4607198Z         "unit",
2026-06-21T09:42:01.4607360Z         "int"
2026-06-21T09:42:01.4607513Z       ],
2026-06-21T09:42:01.4607670Z       "stages": {
2026-06-21T09:42:01.4607823Z         "doc": {
2026-06-21T09:42:01.4607990Z           "complete": true,
2026-06-21T09:42:01.4608136Z           "evidence": [
2026-06-21T09:42:01.4608293Z             {
2026-06-21T09:42:01.4608472Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.4608650Z               "line": 163
2026-06-21T09:42:01.4608806Z             }
2026-06-21T09:42:01.4609049Z           ]
2026-06-21T09:42:01.4609203Z         },
2026-06-21T09:42:01.4609359Z         "impl": {
2026-06-21T09:42:01.4609532Z           "complete": true,
2026-06-21T09:42:01.4609693Z           "evidence": [
2026-06-21T09:42:01.4609847Z             {
2026-06-21T09:42:01.4610060Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:42:01.4610218Z               "line": 105
2026-06-21T09:42:01.4610370Z             },
2026-06-21T09:42:01.4610514Z             {
2026-06-21T09:42:01.4610710Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4610876Z               "line": 7219
2026-06-21T09:42:01.4611031Z             }
2026-06-21T09:42:01.4611195Z           ]
2026-06-21T09:42:01.4611346Z         },
2026-06-21T09:42:01.4611495Z         "int": {
2026-06-21T09:42:01.4611661Z           "complete": true,
2026-06-21T09:42:01.4611819Z           "evidence": [
2026-06-21T09:42:01.4611976Z             {
2026-06-21T09:42:01.4612157Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4612453Z               "line": 7384
2026-06-21T09:42:01.4612605Z             }
2026-06-21T09:42:01.4612768Z           ]
2026-06-21T09:42:01.4613002Z         },
2026-06-21T09:42:01.4613163Z         "unit": {
2026-06-21T09:42:01.4613339Z           "complete": true,
2026-06-21T09:42:01.4613498Z           "evidence": [
2026-06-21T09:42:01.4613646Z             {
2026-06-21T09:42:01.4613832Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4613990Z               "line": 7355
2026-06-21T09:42:01.4614142Z             }
2026-06-21T09:42:01.4614296Z           ]
2026-06-21T09:42:01.4614452Z         }
2026-06-21T09:42:01.4614601Z       }
2026-06-21T09:42:01.4614753Z     },
2026-06-21T09:42:01.4614906Z     {
2026-06-21T09:42:01.4615100Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-21T09:42:01.4617023Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-21T09:42:01.4617215Z       "requiredStages": [
2026-06-21T09:42:01.4617367Z         "impl",
2026-06-21T09:42:01.4617516Z         "unit"
2026-06-21T09:42:01.4617667Z       ],
2026-06-21T09:42:01.4617807Z       "stages": {
2026-06-21T09:42:01.4617963Z         "doc": {
2026-06-21T09:42:01.4618146Z           "complete": false,
2026-06-21T09:42:01.4618296Z           "evidence": []
2026-06-21T09:42:01.4618446Z         },
2026-06-21T09:42:01.4618592Z         "impl": {
2026-06-21T09:42:01.4618753Z           "complete": true,
2026-06-21T09:42:01.4618913Z           "evidence": [
2026-06-21T09:42:01.4619153Z             {
2026-06-21T09:42:01.4619347Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4619510Z               "line": 3165
2026-06-21T09:42:01.4619657Z             }
2026-06-21T09:42:01.4619810Z           ]
2026-06-21T09:42:01.4619966Z         },
2026-06-21T09:42:01.4620120Z         "int": {
2026-06-21T09:42:01.4620296Z           "complete": false,
2026-06-21T09:42:01.4620468Z           "evidence": []
2026-06-21T09:42:01.4620620Z         },
2026-06-21T09:42:01.4620773Z         "unit": {
2026-06-21T09:42:01.4620935Z           "complete": true,
2026-06-21T09:42:01.4621102Z           "evidence": [
2026-06-21T09:42:01.4621240Z             {
2026-06-21T09:42:01.4621426Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4621592Z               "line": 7331
2026-06-21T09:42:01.4621741Z             }
2026-06-21T09:42:01.4621897Z           ]
2026-06-21T09:42:01.4622051Z         }
2026-06-21T09:42:01.4622197Z       }
2026-06-21T09:42:01.4622351Z     },
2026-06-21T09:42:01.4622502Z     {
2026-06-21T09:42:01.4622675Z       "id": "REQ-EP-1",
2026-06-21T09:42:01.4622904Z       "title": "Day-one endpoint types; open type system",
2026-06-21T09:42:01.4623085Z       "requiredStages": [
2026-06-21T09:42:01.4623243Z         "impl",
2026-06-21T09:42:01.4623398Z         "unit"
2026-06-21T09:42:01.4623553Z       ],
2026-06-21T09:42:01.4623718Z       "stages": {
2026-06-21T09:42:01.4623870Z         "doc": {
2026-06-21T09:42:01.4624040Z           "complete": false,
2026-06-21T09:42:01.4624207Z           "evidence": []
2026-06-21T09:42:01.4624355Z         },
2026-06-21T09:42:01.4624517Z         "impl": {
2026-06-21T09:42:01.4624684Z           "complete": true,
2026-06-21T09:42:01.4624856Z           "evidence": [
2026-06-21T09:42:01.4625012Z             {
2026-06-21T09:42:01.4625228Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:42:01.4625398Z               "line": 77
2026-06-21T09:42:01.4625547Z             },
2026-06-21T09:42:01.4625699Z             {
2026-06-21T09:42:01.4625909Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:42:01.4626076Z               "line": 94
2026-06-21T09:42:01.4626333Z             }
2026-06-21T09:42:01.4626487Z           ]
2026-06-21T09:42:01.4626647Z         },
2026-06-21T09:42:01.4626795Z         "int": {
2026-06-21T09:42:01.4627060Z           "complete": false,
2026-06-21T09:42:01.4627227Z           "evidence": []
2026-06-21T09:42:01.4627374Z         },
2026-06-21T09:42:01.4627532Z         "unit": {
2026-06-21T09:42:01.4627684Z           "complete": true,
2026-06-21T09:42:01.4627847Z           "evidence": [
2026-06-21T09:42:01.4627994Z             {
2026-06-21T09:42:01.4628208Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:42:01.4628362Z               "line": 161
2026-06-21T09:42:01.4628523Z             },
2026-06-21T09:42:01.4628682Z             {
2026-06-21T09:42:01.4628890Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:42:01.4629124Z               "line": 178
2026-06-21T09:42:01.4629275Z             }
2026-06-21T09:42:01.4629464Z           ]
2026-06-21T09:42:01.4629607Z         }
2026-06-21T09:42:01.4629770Z       }
2026-06-21T09:42:01.4629912Z     },
2026-06-21T09:42:01.4630056Z     {
2026-06-21T09:42:01.4630226Z       "id": "REQ-EP-2",
2026-06-21T09:42:01.4630508Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-21T09:42:01.4630680Z       "requiredStages": [
2026-06-21T09:42:01.4630828Z         "impl",
2026-06-21T09:42:01.4630985Z         "unit"
2026-06-21T09:42:01.4631147Z       ],
2026-06-21T09:42:01.4631300Z       "stages": {
2026-06-21T09:42:01.4631457Z         "doc": {
2026-06-21T09:42:01.4631625Z           "complete": false,
2026-06-21T09:42:01.4631786Z           "evidence": []
2026-06-21T09:42:01.4631944Z         },
2026-06-21T09:42:01.4632095Z         "impl": {
2026-06-21T09:42:01.4632272Z           "complete": true,
2026-06-21T09:42:01.4632433Z           "evidence": [
2026-06-21T09:42:01.4632592Z             {
2026-06-21T09:42:01.4632796Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:42:01.4632968Z               "line": 114
2026-06-21T09:42:01.4633120Z             },
2026-06-21T09:42:01.4633269Z             {
2026-06-21T09:42:01.4633489Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:42:01.4633650Z               "line": 131
2026-06-21T09:42:01.4633808Z             },
2026-06-21T09:42:01.4633954Z             {
2026-06-21T09:42:01.4634170Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:42:01.4634325Z               "line": 138
2026-06-21T09:42:01.4634483Z             }
2026-06-21T09:42:01.4634633Z           ]
2026-06-21T09:42:01.4634786Z         },
2026-06-21T09:42:01.4634943Z         "int": {
2026-06-21T09:42:01.4635115Z           "complete": false,
2026-06-21T09:42:01.4635277Z           "evidence": []
2026-06-21T09:42:01.4635430Z         },
2026-06-21T09:42:01.4635582Z         "unit": {
2026-06-21T09:42:01.4635754Z           "complete": true,
2026-06-21T09:42:01.4635920Z           "evidence": [
2026-06-21T09:42:01.4636083Z             {
2026-06-21T09:42:01.4636283Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:42:01.4636450Z               "line": 190
2026-06-21T09:42:01.4636607Z             },
2026-06-21T09:42:01.4636761Z             {
2026-06-21T09:42:01.4636971Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:42:01.4637122Z               "line": 208
2026-06-21T09:42:01.4637278Z             },
2026-06-21T09:42:01.4637421Z             {
2026-06-21T09:42:01.4637643Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:42:01.4637787Z               "line": 221
2026-06-21T09:42:01.4637944Z             }
2026-06-21T09:42:01.4638102Z           ]
2026-06-21T09:42:01.4638254Z         }
2026-06-21T09:42:01.4638407Z       }
2026-06-21T09:42:01.4638554Z     },
2026-06-21T09:42:01.4638702Z     {
2026-06-21T09:42:01.4638869Z       "id": "REQ-EP-3",
2026-06-21T09:42:01.4639256Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-21T09:42:01.4639422Z       "requiredStages": [
2026-06-21T09:42:01.4639576Z         "impl",
2026-06-21T09:42:01.4639840Z         "unit"
2026-06-21T09:42:01.4639987Z       ],
2026-06-21T09:42:01.4643002Z       "stages": {
2026-06-21T09:42:01.4643327Z         "doc": {
2026-06-21T09:42:01.4643504Z           "complete": false,
2026-06-21T09:42:01.4643676Z           "evidence": []
2026-06-21T09:42:01.4643824Z         },
2026-06-21T09:42:01.4643975Z         "impl": {
2026-06-21T09:42:01.4644134Z           "complete": true,
2026-06-21T09:42:01.4644300Z           "evidence": [
2026-06-21T09:42:01.4644453Z             {
2026-06-21T09:42:01.4644702Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:42:01.4644895Z               "line": 31
2026-06-21T09:42:01.4645047Z             },
2026-06-21T09:42:01.4645198Z             {
2026-06-21T09:42:01.4645413Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:42:01.4645574Z               "line": 49
2026-06-21T09:42:01.4645728Z             }
2026-06-21T09:42:01.4645884Z           ]
2026-06-21T09:42:01.4646047Z         },
2026-06-21T09:42:01.4646203Z         "int": {
2026-06-21T09:42:01.4646376Z           "complete": false,
2026-06-21T09:42:01.4646528Z           "evidence": []
2026-06-21T09:42:01.4646691Z         },
2026-06-21T09:42:01.4646838Z         "unit": {
2026-06-21T09:42:01.4647015Z           "complete": true,
2026-06-21T09:42:01.4647177Z           "evidence": [
2026-06-21T09:42:01.4647325Z             {
2026-06-21T09:42:01.4647531Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:42:01.4647687Z               "line": 156
2026-06-21T09:42:01.4647843Z             },
2026-06-21T09:42:01.4647985Z             {
2026-06-21T09:42:01.4648185Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:42:01.4648356Z               "line": 164
2026-06-21T09:42:01.4648509Z             },
2026-06-21T09:42:01.4648667Z             {
2026-06-21T09:42:01.4648862Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:42:01.4649119Z               "line": 177
2026-06-21T09:42:01.4649267Z             },
2026-06-21T09:42:01.4649424Z             {
2026-06-21T09:42:01.4649633Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:42:01.4649783Z               "line": 200
2026-06-21T09:42:01.4649929Z             },
2026-06-21T09:42:01.4650073Z             {
2026-06-21T09:42:01.4650272Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:42:01.4650443Z               "line": 216
2026-06-21T09:42:01.4650594Z             },
2026-06-21T09:42:01.4650737Z             {
2026-06-21T09:42:01.4650942Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:42:01.4651110Z               "line": 233
2026-06-21T09:42:01.4651261Z             }
2026-06-21T09:42:01.4651415Z           ]
2026-06-21T09:42:01.4651567Z         }
2026-06-21T09:42:01.4651720Z       }
2026-06-21T09:42:01.4651862Z     },
2026-06-21T09:42:01.4652015Z     {
2026-06-21T09:42:01.4652182Z       "id": "REQ-EP-4",
2026-06-21T09:42:01.4652435Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-21T09:42:01.4652611Z       "requiredStages": [
2026-06-21T09:42:01.4652764Z         "impl",
2026-06-21T09:42:01.4652921Z         "unit"
2026-06-21T09:42:01.4653074Z       ],
2026-06-21T09:42:01.4653234Z       "stages": {
2026-06-21T09:42:01.4653392Z         "doc": {
2026-06-21T09:42:01.4653554Z           "complete": false,
2026-06-21T09:42:01.4653712Z           "evidence": []
2026-06-21T09:42:01.4653859Z         },
2026-06-21T09:42:01.4654022Z         "impl": {
2026-06-21T09:42:01.4654188Z           "complete": true,
2026-06-21T09:42:01.4654350Z           "evidence": [
2026-06-21T09:42:01.4654498Z             {
2026-06-21T09:42:01.4654703Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.4654870Z               "line": 764
2026-06-21T09:42:01.4655023Z             },
2026-06-21T09:42:01.4655180Z             {
2026-06-21T09:42:01.4655389Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.4655546Z               "line": 1127
2026-06-21T09:42:01.4655815Z             },
2026-06-21T09:42:01.4655969Z             {
2026-06-21T09:42:01.4656182Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.4656468Z               "line": 2310
2026-06-21T09:42:01.4656622Z             },
2026-06-21T09:42:01.4656783Z             {
2026-06-21T09:42:01.4656979Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.4657136Z               "line": 118
2026-06-21T09:42:01.4657289Z             },
2026-06-21T09:42:01.4657437Z             {
2026-06-21T09:42:01.4657637Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.4657800Z               "line": 699
2026-06-21T09:42:01.4657951Z             },
2026-06-21T09:42:01.4658105Z             {
2026-06-21T09:42:01.4658299Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.4658456Z               "line": 836
2026-06-21T09:42:01.4658611Z             },
2026-06-21T09:42:01.4658769Z             {
2026-06-21T09:42:01.4659054Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4659222Z               "line": 321
2026-06-21T09:42:01.4659379Z             },
2026-06-21T09:42:01.4659532Z             {
2026-06-21T09:42:01.4659737Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4659903Z               "line": 508
2026-06-21T09:42:01.4660066Z             },
2026-06-21T09:42:01.4660213Z             {
2026-06-21T09:42:01.4660419Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4660580Z               "line": 1334
2026-06-21T09:42:01.4660729Z             }
2026-06-21T09:42:01.4660880Z           ]
2026-06-21T09:42:01.4661032Z         },
2026-06-21T09:42:01.4661182Z         "int": {
2026-06-21T09:42:01.4661349Z           "complete": false,
2026-06-21T09:42:01.4661506Z           "evidence": []
2026-06-21T09:42:01.4661660Z         },
2026-06-21T09:42:01.4661812Z         "unit": {
2026-06-21T09:42:01.4661975Z           "complete": true,
2026-06-21T09:42:01.4662136Z           "evidence": [
2026-06-21T09:42:01.4662289Z             {
2026-06-21T09:42:01.4662488Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.4662648Z               "line": 927
2026-06-21T09:42:01.4662799Z             },
2026-06-21T09:42:01.4662953Z             {
2026-06-21T09:42:01.4663195Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T09:42:01.4663357Z               "line": 76
2026-06-21T09:42:01.4663500Z             },
2026-06-21T09:42:01.4663653Z             {
2026-06-21T09:42:01.4663866Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T09:42:01.4664028Z               "line": 147
2026-06-21T09:42:01.4664176Z             }
2026-06-21T09:42:01.4664320Z           ]
2026-06-21T09:42:01.4664466Z         }
2026-06-21T09:42:01.4664624Z       }
2026-06-21T09:42:01.4664776Z     },
2026-06-21T09:42:01.4664925Z     {
2026-06-21T09:42:01.4665077Z       "id": "REQ-EP-5",
2026-06-21T09:42:01.4666144Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-21T09:42:01.4666323Z       "requiredStages": [
2026-06-21T09:42:01.4666481Z         "impl",
2026-06-21T09:42:01.4666642Z         "unit",
2026-06-21T09:42:01.4666796Z         "int"
2026-06-21T09:42:01.4666952Z       ],
2026-06-21T09:42:01.4667106Z       "stages": {
2026-06-21T09:42:01.4667262Z         "doc": {
2026-06-21T09:42:01.4667431Z           "complete": false,
2026-06-21T09:42:01.4667596Z           "evidence": []
2026-06-21T09:42:01.4667750Z         },
2026-06-21T09:42:01.4667892Z         "impl": {
2026-06-21T09:42:01.4668060Z           "complete": true,
2026-06-21T09:42:01.4668226Z           "evidence": [
2026-06-21T09:42:01.4668370Z             {
2026-06-21T09:42:01.4668602Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.4668760Z               "line": 367
2026-06-21T09:42:01.4669082Z             },
2026-06-21T09:42:01.4669232Z             {
2026-06-21T09:42:01.4669444Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:42:01.4669692Z               "line": 18
2026-06-21T09:42:01.4669839Z             },
2026-06-21T09:42:01.4669997Z             {
2026-06-21T09:42:01.4670196Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:42:01.4670359Z               "line": 63
2026-06-21T09:42:01.4670511Z             },
2026-06-21T09:42:01.4670674Z             {
2026-06-21T09:42:01.4670879Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:42:01.4671045Z               "line": 92
2026-06-21T09:42:01.4671194Z             },
2026-06-21T09:42:01.4671346Z             {
2026-06-21T09:42:01.4671559Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:42:01.4671714Z               "line": 167
2026-06-21T09:42:01.4671876Z             },
2026-06-21T09:42:01.4672015Z             {
2026-06-21T09:42:01.4672215Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:42:01.4672372Z               "line": 179
2026-06-21T09:42:01.4672530Z             },
2026-06-21T09:42:01.4672687Z             {
2026-06-21T09:42:01.4672893Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.4673049Z               "line": 114
2026-06-21T09:42:01.4673198Z             },
2026-06-21T09:42:01.4673345Z             {
2026-06-21T09:42:01.4673555Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.4673702Z               "line": 22
2026-06-21T09:42:01.4673861Z             },
2026-06-21T09:42:01.4674012Z             {
2026-06-21T09:42:01.4674218Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.4674378Z               "line": 145
2026-06-21T09:42:01.4674532Z             },
2026-06-21T09:42:01.4674688Z             {
2026-06-21T09:42:01.4674890Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.4675046Z               "line": 174
2026-06-21T09:42:01.4675204Z             },
2026-06-21T09:42:01.4675361Z             {
2026-06-21T09:42:01.4675557Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.4675724Z               "line": 196
2026-06-21T09:42:01.4675876Z             },
2026-06-21T09:42:01.4676025Z             {
2026-06-21T09:42:01.4676229Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.4676392Z               "line": 221
2026-06-21T09:42:01.4676581Z             },
2026-06-21T09:42:01.4676733Z             {
2026-06-21T09:42:01.4676930Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.4677094Z               "line": 247
2026-06-21T09:42:01.4677245Z             },
2026-06-21T09:42:01.4677399Z             {
2026-06-21T09:42:01.4677608Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.4677771Z               "line": 270
2026-06-21T09:42:01.4677923Z             },
2026-06-21T09:42:01.4678071Z             {
2026-06-21T09:42:01.4678291Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.4678447Z               "line": 104
2026-06-21T09:42:01.4678601Z             },
2026-06-21T09:42:01.4678752Z             {
2026-06-21T09:42:01.4679015Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4679187Z               "line": 6068
2026-06-21T09:42:01.4679334Z             },
2026-06-21T09:42:01.4679490Z             {
2026-06-21T09:42:01.4679670Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4679836Z               "line": 6202
2026-06-21T09:42:01.4679980Z             },
2026-06-21T09:42:01.4680131Z             {
2026-06-21T09:42:01.4680318Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4680470Z               "line": 6368
2026-06-21T09:42:01.4680628Z             },
2026-06-21T09:42:01.4680770Z             {
2026-06-21T09:42:01.4680957Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4681114Z               "line": 6896
2026-06-21T09:42:01.4681381Z             }
2026-06-21T09:42:01.4681530Z           ]
2026-06-21T09:42:01.4681682Z         },
2026-06-21T09:42:01.4681925Z         "int": {
2026-06-21T09:42:01.4682090Z           "complete": true,
2026-06-21T09:42:01.4682265Z           "evidence": [
2026-06-21T09:42:01.4682407Z             {
2026-06-21T09:42:01.4682627Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T09:42:01.4682795Z               "line": 16
2026-06-21T09:42:01.4682951Z             },
2026-06-21T09:42:01.4683109Z             {
2026-06-21T09:42:01.4683304Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T09:42:01.4683467Z               "line": 15
2026-06-21T09:42:01.4683614Z             }
2026-06-21T09:42:01.4683768Z           ]
2026-06-21T09:42:01.4683929Z         },
2026-06-21T09:42:01.4684077Z         "unit": {
2026-06-21T09:42:01.4684248Z           "complete": true,
2026-06-21T09:42:01.4684402Z           "evidence": [
2026-06-21T09:42:01.4684559Z             {
2026-06-21T09:42:01.4684769Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:42:01.4684934Z               "line": 246
2026-06-21T09:42:01.4685082Z             },
2026-06-21T09:42:01.4685243Z             {
2026-06-21T09:42:01.4685455Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:42:01.4685601Z               "line": 306
2026-06-21T09:42:01.4685754Z             },
2026-06-21T09:42:01.4685907Z             {
2026-06-21T09:42:01.4686107Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:42:01.4686270Z               "line": 363
2026-06-21T09:42:01.4686416Z             },
2026-06-21T09:42:01.4686570Z             {
2026-06-21T09:42:01.4686774Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.4686943Z               "line": 286
2026-06-21T09:42:01.4687093Z             },
2026-06-21T09:42:01.4687260Z             {
2026-06-21T09:42:01.4687472Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.4687630Z               "line": 338
2026-06-21T09:42:01.4687786Z             },
2026-06-21T09:42:01.4687935Z             {
2026-06-21T09:42:01.4688153Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.4688321Z               "line": 783
2026-06-21T09:42:01.4688468Z             },
2026-06-21T09:42:01.4688621Z             {
2026-06-21T09:42:01.4688807Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4689060Z               "line": 8751
2026-06-21T09:42:01.4689214Z             },
2026-06-21T09:42:01.4689369Z             {
2026-06-21T09:42:01.4689575Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4689733Z               "line": 8904
2026-06-21T09:42:01.4689885Z             },
2026-06-21T09:42:01.4690031Z             {
2026-06-21T09:42:01.4690221Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4690372Z               "line": 9493
2026-06-21T09:42:01.4690516Z             },
2026-06-21T09:42:01.4690668Z             {
2026-06-21T09:42:01.4690854Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4691020Z               "line": 9609
2026-06-21T09:42:01.4691164Z             }
2026-06-21T09:42:01.4691321Z           ]
2026-06-21T09:42:01.4691474Z         }
2026-06-21T09:42:01.4691627Z       }
2026-06-21T09:42:01.4691780Z     },
2026-06-21T09:42:01.4691927Z     {
2026-06-21T09:42:01.4692086Z       "id": "REQ-EP-6",
2026-06-21T09:42:01.4694323Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-21T09:42:01.4694499Z       "requiredStages": [
2026-06-21T09:42:01.4694657Z         "doc",
2026-06-21T09:42:01.4694915Z         "impl",
2026-06-21T09:42:01.4695070Z         "unit"
2026-06-21T09:42:01.4695224Z       ],
2026-06-21T09:42:01.4695479Z       "stages": {
2026-06-21T09:42:01.4695629Z         "doc": {
2026-06-21T09:42:01.4695803Z           "complete": true,
2026-06-21T09:42:01.4695967Z           "evidence": [
2026-06-21T09:42:01.4696118Z             {
2026-06-21T09:42:01.4696291Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.4696442Z               "line": 227
2026-06-21T09:42:01.4696591Z             }
2026-06-21T09:42:01.4696738Z           ]
2026-06-21T09:42:01.4696897Z         },
2026-06-21T09:42:01.4697058Z         "impl": {
2026-06-21T09:42:01.4697221Z           "complete": true,
2026-06-21T09:42:01.4697382Z           "evidence": [
2026-06-21T09:42:01.4697536Z             {
2026-06-21T09:42:01.4697748Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.4697900Z               "line": 212
2026-06-21T09:42:01.4698046Z             }
2026-06-21T09:42:01.4698204Z           ]
2026-06-21T09:42:01.4698351Z         },
2026-06-21T09:42:01.4698510Z         "int": {
2026-06-21T09:42:01.4698675Z           "complete": true,
2026-06-21T09:42:01.4698843Z           "evidence": [
2026-06-21T09:42:01.4699068Z             {
2026-06-21T09:42:01.4699286Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T09:42:01.4699444Z               "line": 18
2026-06-21T09:42:01.4699596Z             }
2026-06-21T09:42:01.4699755Z           ]
2026-06-21T09:42:01.4699897Z         },
2026-06-21T09:42:01.4700065Z         "unit": {
2026-06-21T09:42:01.4700231Z           "complete": true,
2026-06-21T09:42:01.4700403Z           "evidence": [
2026-06-21T09:42:01.4700558Z             {
2026-06-21T09:42:01.4700772Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.4700928Z               "line": 556
2026-06-21T09:42:01.4701071Z             },
2026-06-21T09:42:01.4701242Z             {
2026-06-21T09:42:01.4701444Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.4701610Z               "line": 904
2026-06-21T09:42:01.4701768Z             }
2026-06-21T09:42:01.4701920Z           ]
2026-06-21T09:42:01.4702086Z         }
2026-06-21T09:42:01.4702239Z       }
2026-06-21T09:42:01.4702396Z     },
2026-06-21T09:42:01.4702549Z     {
2026-06-21T09:42:01.4702711Z       "id": "REQ-EP-7",
2026-06-21T09:42:01.4705170Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-21T09:42:01.4705340Z       "requiredStages": [
2026-06-21T09:42:01.4705508Z         "doc",
2026-06-21T09:42:01.4705674Z         "impl",
2026-06-21T09:42:01.4705823Z         "unit"
2026-06-21T09:42:01.4705978Z       ],
2026-06-21T09:42:01.4706136Z       "stages": {
2026-06-21T09:42:01.4706298Z         "doc": {
2026-06-21T09:42:01.4706460Z           "complete": true,
2026-06-21T09:42:01.4706617Z           "evidence": [
2026-06-21T09:42:01.4706775Z             {
2026-06-21T09:42:01.4706946Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.4707104Z               "line": 490
2026-06-21T09:42:01.4707256Z             }
2026-06-21T09:42:01.4707400Z           ]
2026-06-21T09:42:01.4707546Z         },
2026-06-21T09:42:01.4707705Z         "impl": {
2026-06-21T09:42:01.4707871Z           "complete": true,
2026-06-21T09:42:01.4708034Z           "evidence": [
2026-06-21T09:42:01.4708195Z             {
2026-06-21T09:42:01.4708394Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.4708554Z               "line": 505
2026-06-21T09:42:01.4708702Z             },
2026-06-21T09:42:01.4708860Z             {
2026-06-21T09:42:01.4709250Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:42:01.4709408Z               "line": 87
2026-06-21T09:42:01.4709671Z             },
2026-06-21T09:42:01.4709818Z             {
2026-06-21T09:42:01.4710047Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.4710194Z               "line": 81
2026-06-21T09:42:01.4710343Z             },
2026-06-21T09:42:01.4710499Z             {
2026-06-21T09:42:01.4710710Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.4710872Z               "line": 166
2026-06-21T09:42:01.4711020Z             },
2026-06-21T09:42:01.4711175Z             {
2026-06-21T09:42:01.4711360Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4711526Z               "line": 1645
2026-06-21T09:42:01.4711689Z             }
2026-06-21T09:42:01.4711836Z           ]
2026-06-21T09:42:01.4711994Z         },
2026-06-21T09:42:01.4712146Z         "int": {
2026-06-21T09:42:01.4712323Z           "complete": false,
2026-06-21T09:42:01.4712475Z           "evidence": []
2026-06-21T09:42:01.4712623Z         },
2026-06-21T09:42:01.4712771Z         "unit": {
2026-06-21T09:42:01.4712933Z           "complete": true,
2026-06-21T09:42:01.4713105Z           "evidence": [
2026-06-21T09:42:01.4713253Z             {
2026-06-21T09:42:01.4713459Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.4713623Z               "line": 623
2026-06-21T09:42:01.4713781Z             },
2026-06-21T09:42:01.4713931Z             {
2026-06-21T09:42:01.4714117Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:42:01.4714283Z               "line": 212
2026-06-21T09:42:01.4714436Z             },
2026-06-21T09:42:01.4714594Z             {
2026-06-21T09:42:01.4714776Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:42:01.4714946Z               "line": 307
2026-06-21T09:42:01.4715105Z             },
2026-06-21T09:42:01.4715252Z             {
2026-06-21T09:42:01.4715444Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4715604Z               "line": 7724
2026-06-21T09:42:01.4715768Z             },
2026-06-21T09:42:01.4715919Z             {
2026-06-21T09:42:01.4716101Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4716267Z               "line": 7751
2026-06-21T09:42:01.4716416Z             }
2026-06-21T09:42:01.4716567Z           ]
2026-06-21T09:42:01.4716720Z         }
2026-06-21T09:42:01.4716872Z       }
2026-06-21T09:42:01.4717020Z     },
2026-06-21T09:42:01.4717167Z     {
2026-06-21T09:42:01.4717331Z       "id": "REQ-FRONT-1",
2026-06-21T09:42:01.4717616Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-21T09:42:01.4717787Z       "requiredStages": [],
2026-06-21T09:42:01.4717945Z       "stages": {
2026-06-21T09:42:01.4718102Z         "doc": {
2026-06-21T09:42:01.4718255Z           "complete": false,
2026-06-21T09:42:01.4718431Z           "evidence": []
2026-06-21T09:42:01.4718579Z         },
2026-06-21T09:42:01.4718736Z         "impl": {
2026-06-21T09:42:01.4718902Z           "complete": false,
2026-06-21T09:42:01.4719138Z           "evidence": []
2026-06-21T09:42:01.4719296Z         },
2026-06-21T09:42:01.4719457Z         "int": {
2026-06-21T09:42:01.4719625Z           "complete": false,
2026-06-21T09:42:01.4719791Z           "evidence": []
2026-06-21T09:42:01.4719940Z         },
2026-06-21T09:42:01.4720092Z         "unit": {
2026-06-21T09:42:01.4720255Z           "complete": false,
2026-06-21T09:42:01.4720421Z           "evidence": []
2026-06-21T09:42:01.4720574Z         }
2026-06-21T09:42:01.4720726Z       }
2026-06-21T09:42:01.4720879Z     },
2026-06-21T09:42:01.4721032Z     {
2026-06-21T09:42:01.4721223Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-21T09:42:01.4729039Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-21T09:42:01.4729453Z       "requiredStages": [
2026-06-21T09:42:01.4729608Z         "int"
2026-06-21T09:42:01.4729755Z       ],
2026-06-21T09:42:01.4729914Z       "stages": {
2026-06-21T09:42:01.4730065Z         "doc": {
2026-06-21T09:42:01.4730223Z           "complete": false,
2026-06-21T09:42:01.4730394Z           "evidence": []
2026-06-21T09:42:01.4730538Z         },
2026-06-21T09:42:01.4730699Z         "impl": {
2026-06-21T09:42:01.4730867Z           "complete": false,
2026-06-21T09:42:01.4731029Z           "evidence": []
2026-06-21T09:42:01.4731176Z         },
2026-06-21T09:42:01.4731333Z         "int": {
2026-06-21T09:42:01.4731501Z           "complete": true,
2026-06-21T09:42:01.4731663Z           "evidence": [
2026-06-21T09:42:01.4731816Z             {
2026-06-21T09:42:01.4732031Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T09:42:01.4732201Z               "line": 300
2026-06-21T09:42:01.4732353Z             }
2026-06-21T09:42:01.4732513Z           ]
2026-06-21T09:42:01.4732661Z         },
2026-06-21T09:42:01.4732814Z         "unit": {
2026-06-21T09:42:01.4732980Z           "complete": false,
2026-06-21T09:42:01.4733138Z           "evidence": []
2026-06-21T09:42:01.4733290Z         }
2026-06-21T09:42:01.4733443Z       }
2026-06-21T09:42:01.4733586Z     },
2026-06-21T09:42:01.4733739Z     {
2026-06-21T09:42:01.4733925Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-21T09:42:01.4737701Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-21T09:42:01.4737878Z       "requiredStages": [
2026-06-21T09:42:01.4738030Z         "impl",
2026-06-21T09:42:01.4738183Z         "unit",
2026-06-21T09:42:01.4738340Z         "int"
2026-06-21T09:42:01.4738570Z       ],
2026-06-21T09:42:01.4738727Z       "stages": {
2026-06-21T09:42:01.4738874Z         "doc": {
2026-06-21T09:42:01.4739217Z           "complete": false,
2026-06-21T09:42:01.4739381Z           "evidence": []
2026-06-21T09:42:01.4739541Z         },
2026-06-21T09:42:01.4739700Z         "impl": {
2026-06-21T09:42:01.4739861Z           "complete": true,
2026-06-21T09:42:01.4740022Z           "evidence": [
2026-06-21T09:42:01.4740182Z             {
2026-06-21T09:42:01.4740383Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.4740545Z               "line": 257
2026-06-21T09:42:01.4740707Z             }
2026-06-21T09:42:01.4740854Z           ]
2026-06-21T09:42:01.4741023Z         },
2026-06-21T09:42:01.4741173Z         "int": {
2026-06-21T09:42:01.4741347Z           "complete": true,
2026-06-21T09:42:01.4741512Z           "evidence": [
2026-06-21T09:42:01.4741657Z             {
2026-06-21T09:42:01.4741894Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-21T09:42:01.4742051Z               "line": 93
2026-06-21T09:42:01.4742209Z             }
2026-06-21T09:42:01.4742357Z           ]
2026-06-21T09:42:01.4742505Z         },
2026-06-21T09:42:01.4742667Z         "unit": {
2026-06-21T09:42:01.4742832Z           "complete": true,
2026-06-21T09:42:01.4742994Z           "evidence": [
2026-06-21T09:42:01.4743149Z             {
2026-06-21T09:42:01.4743346Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.4743507Z               "line": 802
2026-06-21T09:42:01.4743660Z             },
2026-06-21T09:42:01.4743821Z             {
2026-06-21T09:42:01.4744003Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.4744161Z               "line": 824
2026-06-21T09:42:01.4744308Z             },
2026-06-21T09:42:01.4744470Z             {
2026-06-21T09:42:01.4744670Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.4744829Z               "line": 855
2026-06-21T09:42:01.4744990Z             }
2026-06-21T09:42:01.4745149Z           ]
2026-06-21T09:42:01.4745300Z         }
2026-06-21T09:42:01.4745451Z       }
2026-06-21T09:42:01.4745612Z     },
2026-06-21T09:42:01.4745763Z     {
2026-06-21T09:42:01.4745974Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-21T09:42:01.4749712Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-21T09:42:01.4749887Z       "requiredStages": [
2026-06-21T09:42:01.4750036Z         "doc",
2026-06-21T09:42:01.4750197Z         "impl",
2026-06-21T09:42:01.4750351Z         "unit",
2026-06-21T09:42:01.4750497Z         "int"
2026-06-21T09:42:01.4750659Z       ],
2026-06-21T09:42:01.4750819Z       "stages": {
2026-06-21T09:42:01.4750972Z         "doc": {
2026-06-21T09:42:01.4751143Z           "complete": true,
2026-06-21T09:42:01.4751305Z           "evidence": [
2026-06-21T09:42:01.4751457Z             {
2026-06-21T09:42:01.4751653Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.4751819Z               "line": 333
2026-06-21T09:42:01.4751968Z             }
2026-06-21T09:42:01.4752125Z           ]
2026-06-21T09:42:01.4752273Z         },
2026-06-21T09:42:01.4752425Z         "impl": {
2026-06-21T09:42:01.4752588Z           "complete": true,
2026-06-21T09:42:01.4752745Z           "evidence": [
2026-06-21T09:42:01.4753007Z             {
2026-06-21T09:42:01.4753232Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4753478Z               "line": 494
2026-06-21T09:42:01.4753628Z             },
2026-06-21T09:42:01.4753781Z             {
2026-06-21T09:42:01.4753995Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4754163Z               "line": 499
2026-06-21T09:42:01.4754320Z             },
2026-06-21T09:42:01.4754474Z             {
2026-06-21T09:42:01.4754677Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4754835Z               "line": 874
2026-06-21T09:42:01.4754997Z             },
2026-06-21T09:42:01.4755145Z             {
2026-06-21T09:42:01.4755350Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4755512Z               "line": 915
2026-06-21T09:42:01.4755660Z             },
2026-06-21T09:42:01.4755813Z             {
2026-06-21T09:42:01.4756016Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4756186Z               "line": 926
2026-06-21T09:42:01.4756343Z             },
2026-06-21T09:42:01.4756496Z             {
2026-06-21T09:42:01.4756711Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.4756867Z               "line": 358
2026-06-21T09:42:01.4757016Z             }
2026-06-21T09:42:01.4757168Z           ]
2026-06-21T09:42:01.4757327Z         },
2026-06-21T09:42:01.4757473Z         "int": {
2026-06-21T09:42:01.4757641Z           "complete": true,
2026-06-21T09:42:01.4757802Z           "evidence": [
2026-06-21T09:42:01.4757956Z             {
2026-06-21T09:42:01.4758188Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-21T09:42:01.4758351Z               "line": 30
2026-06-21T09:42:01.4758508Z             }
2026-06-21T09:42:01.4758666Z           ]
2026-06-21T09:42:01.4758821Z         },
2026-06-21T09:42:01.4759033Z         "unit": {
2026-06-21T09:42:01.4759203Z           "complete": true,
2026-06-21T09:42:01.4759371Z           "evidence": [
2026-06-21T09:42:01.4759518Z             {
2026-06-21T09:42:01.4759733Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4759890Z               "line": 1493
2026-06-21T09:42:01.4760048Z             },
2026-06-21T09:42:01.4760201Z             {
2026-06-21T09:42:01.4760405Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4760573Z               "line": 1518
2026-06-21T09:42:01.4760719Z             },
2026-06-21T09:42:01.4760868Z             {
2026-06-21T09:42:01.4761071Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4761229Z               "line": 1535
2026-06-21T09:42:01.4761384Z             },
2026-06-21T09:42:01.4761537Z             {
2026-06-21T09:42:01.4761736Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4761899Z               "line": 1578
2026-06-21T09:42:01.4762041Z             }
2026-06-21T09:42:01.4762185Z           ]
2026-06-21T09:42:01.4762337Z         }
2026-06-21T09:42:01.4762496Z       }
2026-06-21T09:42:01.4762646Z     },
2026-06-21T09:42:01.4762801Z     {
2026-06-21T09:42:01.4763033Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-21T09:42:01.4766884Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-21T09:42:01.4767285Z       "requiredStages": [],
2026-06-21T09:42:01.4767451Z       "stages": {
2026-06-21T09:42:01.4767609Z         "doc": {
2026-06-21T09:42:01.4767776Z           "complete": false,
2026-06-21T09:42:01.4767938Z           "evidence": []
2026-06-21T09:42:01.4768100Z         },
2026-06-21T09:42:01.4768253Z         "impl": {
2026-06-21T09:42:01.4768420Z           "complete": false,
2026-06-21T09:42:01.4768592Z           "evidence": []
2026-06-21T09:42:01.4768734Z         },
2026-06-21T09:42:01.4768893Z         "int": {
2026-06-21T09:42:01.4769131Z           "complete": false,
2026-06-21T09:42:01.4769292Z           "evidence": []
2026-06-21T09:42:01.4769448Z         },
2026-06-21T09:42:01.4769607Z         "unit": {
2026-06-21T09:42:01.4769768Z           "complete": false,
2026-06-21T09:42:01.4769931Z           "evidence": []
2026-06-21T09:42:01.4770078Z         }
2026-06-21T09:42:01.4770236Z       }
2026-06-21T09:42:01.4770393Z     },
2026-06-21T09:42:01.4770546Z     {
2026-06-21T09:42:01.4770756Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-21T09:42:01.4776299Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-21T09:42:01.4776495Z       "requiredStages": [
2026-06-21T09:42:01.4776646Z         "impl",
2026-06-21T09:42:01.4776805Z         "unit",
2026-06-21T09:42:01.4776956Z         "int"
2026-06-21T09:42:01.4777107Z       ],
2026-06-21T09:42:01.4777269Z       "stages": {
2026-06-21T09:42:01.4777415Z         "doc": {
2026-06-21T09:42:01.4777584Z           "complete": false,
2026-06-21T09:42:01.4777739Z           "evidence": []
2026-06-21T09:42:01.4777893Z         },
2026-06-21T09:42:01.4778040Z         "impl": {
2026-06-21T09:42:01.4778217Z           "complete": true,
2026-06-21T09:42:01.4778383Z           "evidence": [
2026-06-21T09:42:01.4778522Z             {
2026-06-21T09:42:01.4778742Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4778904Z               "line": 570
2026-06-21T09:42:01.4779138Z             },
2026-06-21T09:42:01.4779285Z             {
2026-06-21T09:42:01.4779509Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4779662Z               "line": 594
2026-06-21T09:42:01.4779805Z             },
2026-06-21T09:42:01.4779960Z             {
2026-06-21T09:42:01.4780157Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4780328Z               "line": 620
2026-06-21T09:42:01.4780486Z             },
2026-06-21T09:42:01.4780633Z             {
2026-06-21T09:42:01.4780843Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4780991Z               "line": 679
2026-06-21T09:42:01.4781253Z             },
2026-06-21T09:42:01.4784444Z             {
2026-06-21T09:42:01.4784717Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:42:01.4785030Z               "line": 89
2026-06-21T09:42:01.4785178Z             },
2026-06-21T09:42:01.4785324Z             {
2026-06-21T09:42:01.4785534Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:42:01.4785699Z               "line": 134
2026-06-21T09:42:01.4785849Z             }
2026-06-21T09:42:01.4786004Z           ]
2026-06-21T09:42:01.4786168Z         },
2026-06-21T09:42:01.4786319Z         "int": {
2026-06-21T09:42:01.4786497Z           "complete": true,
2026-06-21T09:42:01.4786658Z           "evidence": [
2026-06-21T09:42:01.4786817Z             {
2026-06-21T09:42:01.4787074Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-21T09:42:01.4787235Z               "line": 20
2026-06-21T09:42:01.4787394Z             }
2026-06-21T09:42:01.4787549Z           ]
2026-06-21T09:42:01.4787711Z         },
2026-06-21T09:42:01.4787866Z         "unit": {
2026-06-21T09:42:01.4788038Z           "complete": true,
2026-06-21T09:42:01.4788200Z           "evidence": [
2026-06-21T09:42:01.4788357Z             {
2026-06-21T09:42:01.4788576Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.4788740Z               "line": 1047
2026-06-21T09:42:01.4788891Z             },
2026-06-21T09:42:01.4789115Z             {
2026-06-21T09:42:01.4789326Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:42:01.4789492Z               "line": 445
2026-06-21T09:42:01.4789651Z             }
2026-06-21T09:42:01.4789797Z           ]
2026-06-21T09:42:01.4789946Z         }
2026-06-21T09:42:01.4790107Z       }
2026-06-21T09:42:01.4790256Z     },
2026-06-21T09:42:01.4790412Z     {
2026-06-21T09:42:01.4790626Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-21T09:42:01.4794453Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-21T09:42:01.4794642Z       "requiredStages": [
2026-06-21T09:42:01.4794791Z         "doc",
2026-06-21T09:42:01.4794948Z         "impl",
2026-06-21T09:42:01.4795101Z         "unit",
2026-06-21T09:42:01.4795257Z         "int"
2026-06-21T09:42:01.4795412Z       ],
2026-06-21T09:42:01.4795571Z       "stages": {
2026-06-21T09:42:01.4795719Z         "doc": {
2026-06-21T09:42:01.4795893Z           "complete": true,
2026-06-21T09:42:01.4796060Z           "evidence": [
2026-06-21T09:42:01.4796218Z             {
2026-06-21T09:42:01.4796399Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.4796565Z               "line": 302
2026-06-21T09:42:01.4796723Z             }
2026-06-21T09:42:01.4796880Z           ]
2026-06-21T09:42:01.4797038Z         },
2026-06-21T09:42:01.4797185Z         "impl": {
2026-06-21T09:42:01.4797358Z           "complete": true,
2026-06-21T09:42:01.4797519Z           "evidence": [
2026-06-21T09:42:01.4797677Z             {
2026-06-21T09:42:01.4797891Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.4798059Z               "line": 108
2026-06-21T09:42:01.4798219Z             },
2026-06-21T09:42:01.4798366Z             {
2026-06-21T09:42:01.4798574Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.4798733Z               "line": 843
2026-06-21T09:42:01.4799080Z             },
2026-06-21T09:42:01.4799233Z             {
2026-06-21T09:42:01.4799437Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.4799699Z               "line": 1043
2026-06-21T09:42:01.4799847Z             },
2026-06-21T09:42:01.4799999Z             {
2026-06-21T09:42:01.4800211Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4800372Z               "line": 23
2026-06-21T09:42:01.4800521Z             },
2026-06-21T09:42:01.4800681Z             {
2026-06-21T09:42:01.4800893Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4801048Z               "line": 113
2026-06-21T09:42:01.4801201Z             },
2026-06-21T09:42:01.4801353Z             {
2026-06-21T09:42:01.4801568Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4801734Z               "line": 158
2026-06-21T09:42:01.4801887Z             },
2026-06-21T09:42:01.4802044Z             {
2026-06-21T09:42:01.4802259Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4802422Z               "line": 218
2026-06-21T09:42:01.4802574Z             },
2026-06-21T09:42:01.4802727Z             {
2026-06-21T09:42:01.4802931Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4803095Z               "line": 261
2026-06-21T09:42:01.4803260Z             },
2026-06-21T09:42:01.4803402Z             {
2026-06-21T09:42:01.4803615Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4803767Z               "line": 275
2026-06-21T09:42:01.4803920Z             },
2026-06-21T09:42:01.4804078Z             {
2026-06-21T09:42:01.4804282Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4804445Z               "line": 320
2026-06-21T09:42:01.4804596Z             },
2026-06-21T09:42:01.4804754Z             {
2026-06-21T09:42:01.4804964Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4805121Z               "line": 347
2026-06-21T09:42:01.4805279Z             },
2026-06-21T09:42:01.4805431Z             {
2026-06-21T09:42:01.4805652Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4805812Z               "line": 359
2026-06-21T09:42:01.4805972Z             },
2026-06-21T09:42:01.4806122Z             {
2026-06-21T09:42:01.4806326Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4806486Z               "line": 373
2026-06-21T09:42:01.4806634Z             },
2026-06-21T09:42:01.4806782Z             {
2026-06-21T09:42:01.4806988Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4807153Z               "line": 400
2026-06-21T09:42:01.4807312Z             },
2026-06-21T09:42:01.4807464Z             {
2026-06-21T09:42:01.4807669Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4807831Z               "line": 643
2026-06-21T09:42:01.4807989Z             },
2026-06-21T09:42:01.4808136Z             {
2026-06-21T09:42:01.4808351Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4808510Z               "line": 989
2026-06-21T09:42:01.4808651Z             },
2026-06-21T09:42:01.4808807Z             {
2026-06-21T09:42:01.4809091Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.4809259Z               "line": 310
2026-06-21T09:42:01.4809425Z             },
2026-06-21T09:42:01.4809583Z             {
2026-06-21T09:42:01.4809783Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.4809936Z               "line": 1226
2026-06-21T09:42:01.4810098Z             },
2026-06-21T09:42:01.4810254Z             {
2026-06-21T09:42:01.4810456Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.4810618Z               "line": 1298
2026-06-21T09:42:01.4810761Z             },
2026-06-21T09:42:01.4810912Z             {
2026-06-21T09:42:01.4811105Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.4811386Z               "line": 1310
2026-06-21T09:42:01.4811537Z             },
2026-06-21T09:42:01.4811848Z             {
2026-06-21T09:42:01.4812051Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.4812218Z               "line": 2016
2026-06-21T09:42:01.4812377Z             },
2026-06-21T09:42:01.4812515Z             {
2026-06-21T09:42:01.4812720Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4812876Z               "line": 188
2026-06-21T09:42:01.4813030Z             },
2026-06-21T09:42:01.4813191Z             {
2026-06-21T09:42:01.4813383Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4813539Z               "line": 265
2026-06-21T09:42:01.4813684Z             },
2026-06-21T09:42:01.4813848Z             {
2026-06-21T09:42:01.4814038Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4814207Z               "line": 276
2026-06-21T09:42:01.4814357Z             },
2026-06-21T09:42:01.4814513Z             {
2026-06-21T09:42:01.4814714Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.4814875Z               "line": 329
2026-06-21T09:42:01.4815029Z             },
2026-06-21T09:42:01.4815180Z             {
2026-06-21T09:42:01.4815386Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4815548Z               "line": 56
2026-06-21T09:42:01.4815691Z             },
2026-06-21T09:42:01.4815849Z             {
2026-06-21T09:42:01.4816049Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4816212Z               "line": 188
2026-06-21T09:42:01.4816363Z             },
2026-06-21T09:42:01.4816546Z             {
2026-06-21T09:42:01.4816762Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T09:42:01.4816924Z               "line": 82
2026-06-21T09:42:01.4817084Z             },
2026-06-21T09:42:01.4817233Z             {
2026-06-21T09:42:01.4817461Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4817619Z               "line": 308
2026-06-21T09:42:01.4817786Z             },
2026-06-21T09:42:01.4817934Z             {
2026-06-21T09:42:01.4818135Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.4818305Z               "line": 424
2026-06-21T09:42:01.4818464Z             },
2026-06-21T09:42:01.4818625Z             {
2026-06-21T09:42:01.4818812Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.4819089Z               "line": 2006
2026-06-21T09:42:01.4819245Z             }
2026-06-21T09:42:01.4819391Z           ]
2026-06-21T09:42:01.4819556Z         },
2026-06-21T09:42:01.4819704Z         "int": {
2026-06-21T09:42:01.4819881Z           "complete": true,
2026-06-21T09:42:01.4820043Z           "evidence": [
2026-06-21T09:42:01.4820210Z             {
2026-06-21T09:42:01.4820429Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T09:42:01.4820590Z               "line": 57
2026-06-21T09:42:01.4820753Z             },
2026-06-21T09:42:01.4820910Z             {
2026-06-21T09:42:01.4821116Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T09:42:01.4821263Z               "line": 41
2026-06-21T09:42:01.4821407Z             }
2026-06-21T09:42:01.4821559Z           ]
2026-06-21T09:42:01.4821708Z         },
2026-06-21T09:42:01.4821855Z         "unit": {
2026-06-21T09:42:01.4822023Z           "complete": true,
2026-06-21T09:42:01.4822187Z           "evidence": [
2026-06-21T09:42:01.4822341Z             {
2026-06-21T09:42:01.4822554Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.4822702Z               "line": 532
2026-06-21T09:42:01.4822864Z             },
2026-06-21T09:42:01.4823012Z             {
2026-06-21T09:42:01.4823212Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.4823384Z               "line": 757
2026-06-21T09:42:01.4823537Z             },
2026-06-21T09:42:01.4823698Z             {
2026-06-21T09:42:01.4823910Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4824181Z               "line": 1067
2026-06-21T09:42:01.4824333Z             },
2026-06-21T09:42:01.4824570Z             {
2026-06-21T09:42:01.4824777Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4824946Z               "line": 1101
2026-06-21T09:42:01.4825097Z             },
2026-06-21T09:42:01.4825255Z             {
2026-06-21T09:42:01.4825465Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4825627Z               "line": 1143
2026-06-21T09:42:01.4825775Z             },
2026-06-21T09:42:01.4825937Z             {
2026-06-21T09:42:01.4826147Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4826308Z               "line": 1215
2026-06-21T09:42:01.4826462Z             },
2026-06-21T09:42:01.4826623Z             {
2026-06-21T09:42:01.4826838Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4827000Z               "line": 1228
2026-06-21T09:42:01.4827163Z             },
2026-06-21T09:42:01.4827308Z             {
2026-06-21T09:42:01.4827503Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4827668Z               "line": 1251
2026-06-21T09:42:01.4827817Z             },
2026-06-21T09:42:01.4827973Z             {
2026-06-21T09:42:01.4828170Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4828337Z               "line": 1277
2026-06-21T09:42:01.4828485Z             },
2026-06-21T09:42:01.4828637Z             {
2026-06-21T09:42:01.4828837Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4829071Z               "line": 1291
2026-06-21T09:42:01.4829228Z             },
2026-06-21T09:42:01.4829372Z             {
2026-06-21T09:42:01.4829576Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4829743Z               "line": 1315
2026-06-21T09:42:01.4829899Z             },
2026-06-21T09:42:01.4830042Z             {
2026-06-21T09:42:01.4830254Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4830413Z               "line": 1447
2026-06-21T09:42:01.4830574Z             },
2026-06-21T09:42:01.4830727Z             {
2026-06-21T09:42:01.4830933Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4831094Z               "line": 1623
2026-06-21T09:42:01.4831252Z             },
2026-06-21T09:42:01.4831409Z             {
2026-06-21T09:42:01.4831624Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4831780Z               "line": 1678
2026-06-21T09:42:01.4831934Z             },
2026-06-21T09:42:01.4832090Z             {
2026-06-21T09:42:01.4832305Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4832473Z               "line": 1724
2026-06-21T09:42:01.4832620Z             },
2026-06-21T09:42:01.4832771Z             {
2026-06-21T09:42:01.4832982Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4833138Z               "line": 1769
2026-06-21T09:42:01.4833297Z             },
2026-06-21T09:42:01.4833453Z             {
2026-06-21T09:42:01.4833663Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4833807Z               "line": 1813
2026-06-21T09:42:01.4833969Z             },
2026-06-21T09:42:01.4834126Z             {
2026-06-21T09:42:01.4834330Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.4834489Z               "line": 1855
2026-06-21T09:42:01.4834631Z             },
2026-06-21T09:42:01.4834785Z             {
2026-06-21T09:42:01.4834983Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.4835150Z               "line": 2369
2026-06-21T09:42:01.4835305Z             },
2026-06-21T09:42:01.4835453Z             {
2026-06-21T09:42:01.4835667Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4835824Z               "line": 217
2026-06-21T09:42:01.4835981Z             },
2026-06-21T09:42:01.4836234Z             {
2026-06-21T09:42:01.4836435Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4836688Z               "line": 233
2026-06-21T09:42:01.4836836Z             },
2026-06-21T09:42:01.4836989Z             {
2026-06-21T09:42:01.4837183Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4837347Z               "line": 254
2026-06-21T09:42:01.4837493Z             },
2026-06-21T09:42:01.4837647Z             {
2026-06-21T09:42:01.4837845Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4837998Z               "line": 265
2026-06-21T09:42:01.4838157Z             },
2026-06-21T09:42:01.4838310Z             {
2026-06-21T09:42:01.4838515Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4838678Z               "line": 278
2026-06-21T09:42:01.4838829Z             },
2026-06-21T09:42:01.4839045Z             {
2026-06-21T09:42:01.4839245Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4839411Z               "line": 289
2026-06-21T09:42:01.4839565Z             },
2026-06-21T09:42:01.4839726Z             {
2026-06-21T09:42:01.4839928Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4840089Z               "line": 301
2026-06-21T09:42:01.4840247Z             },
2026-06-21T09:42:01.4840403Z             {
2026-06-21T09:42:01.4840611Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4840766Z               "line": 312
2026-06-21T09:42:01.4840920Z             },
2026-06-21T09:42:01.4841076Z             {
2026-06-21T09:42:01.4841283Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4841449Z               "line": 323
2026-06-21T09:42:01.4841597Z             },
2026-06-21T09:42:01.4841749Z             {
2026-06-21T09:42:01.4841959Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4842122Z               "line": 332
2026-06-21T09:42:01.4842283Z             },
2026-06-21T09:42:01.4842442Z             {
2026-06-21T09:42:01.4842650Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4842809Z               "line": 342
2026-06-21T09:42:01.4842956Z             },
2026-06-21T09:42:01.4843110Z             {
2026-06-21T09:42:01.4843307Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:42:01.4843471Z               "line": 358
2026-06-21T09:42:01.4843622Z             },
2026-06-21T09:42:01.4843785Z             {
2026-06-21T09:42:01.4843984Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4844152Z               "line": 758
2026-06-21T09:42:01.4844299Z             },
2026-06-21T09:42:01.4844462Z             {
2026-06-21T09:42:01.4844677Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.4844833Z               "line": 794
2026-06-21T09:42:01.4844987Z             },
2026-06-21T09:42:01.4845138Z             {
2026-06-21T09:42:01.4845345Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.4845504Z               "line": 966
2026-06-21T09:42:01.4845662Z             },
2026-06-21T09:42:01.4845826Z             {
2026-06-21T09:42:01.4846033Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T09:42:01.4846198Z               "line": 145
2026-06-21T09:42:01.4846352Z             },
2026-06-21T09:42:01.4846493Z             {
2026-06-21T09:42:01.4846690Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T09:42:01.4846842Z               "line": 224
2026-06-21T09:42:01.4846995Z             },
2026-06-21T09:42:01.4847137Z             {
2026-06-21T09:42:01.4847348Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T09:42:01.4847510Z               "line": 293
2026-06-21T09:42:01.4847672Z             },
2026-06-21T09:42:01.4847834Z             {
2026-06-21T09:42:01.4848125Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T09:42:01.4848900Z               "line": 17
2026-06-21T09:42:01.4849529Z             },
2026-06-21T09:42:01.4849853Z             {
2026-06-21T09:42:01.4850224Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T09:42:01.4850784Z               "line": 104
2026-06-21T09:42:01.4851148Z             }
2026-06-21T09:42:01.4851461Z           ]
2026-06-21T09:42:01.4851776Z         }
2026-06-21T09:42:01.4852109Z       }
2026-06-21T09:42:01.4852429Z     },
2026-06-21T09:42:01.4852725Z     {
2026-06-21T09:42:01.4853077Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-21T09:42:01.4857884Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-21T09:42:01.4862637Z       "requiredStages": [
2026-06-21T09:42:01.4863013Z         "doc",
2026-06-21T09:42:01.4863332Z         "impl",
2026-06-21T09:42:01.4863670Z         "unit",
2026-06-21T09:42:01.4863999Z         "int"
2026-06-21T09:42:01.4864333Z       ],
2026-06-21T09:42:01.4864662Z       "stages": {
2026-06-21T09:42:01.4865000Z         "doc": {
2026-06-21T09:42:01.4865376Z           "complete": true,
2026-06-21T09:42:01.4865826Z           "evidence": [
2026-06-21T09:42:01.4866183Z             {
2026-06-21T09:42:01.4866549Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.4867003Z               "line": 388
2026-06-21T09:42:01.4867362Z             }
2026-06-21T09:42:01.4867720Z           ]
2026-06-21T09:42:01.4868035Z         },
2026-06-21T09:42:01.4868349Z         "impl": {
2026-06-21T09:42:01.4868694Z           "complete": true,
2026-06-21T09:42:01.4869140Z           "evidence": [
2026-06-21T09:42:01.4869525Z             {
2026-06-21T09:42:01.4869895Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4870359Z               "line": 823
2026-06-21T09:42:01.4870720Z             },
2026-06-21T09:42:01.4871025Z             {
2026-06-21T09:42:01.4871392Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4871846Z               "line": 846
2026-06-21T09:42:01.4872202Z             }
2026-06-21T09:42:01.4872524Z           ]
2026-06-21T09:42:01.4872839Z         },
2026-06-21T09:42:01.4873144Z         "int": {
2026-06-21T09:42:01.4873488Z           "complete": true,
2026-06-21T09:42:01.4873860Z           "evidence": [
2026-06-21T09:42:01.4874222Z             {
2026-06-21T09:42:01.4874612Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T09:42:01.4875093Z               "line": 228
2026-06-21T09:42:01.4875442Z             },
2026-06-21T09:42:01.4875752Z             {
2026-06-21T09:42:01.4876123Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T09:42:01.4876585Z               "line": 468
2026-06-21T09:42:01.4876934Z             }
2026-06-21T09:42:01.4877252Z           ]
2026-06-21T09:42:01.4877550Z         },
2026-06-21T09:42:01.4877865Z         "unit": {
2026-06-21T09:42:01.4878241Z           "complete": true,
2026-06-21T09:42:01.4878619Z           "evidence": [
2026-06-21T09:42:01.4879042Z             {
2026-06-21T09:42:01.4879419Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.4879883Z               "line": 1583
2026-06-21T09:42:01.4880355Z             }
2026-06-21T09:42:01.4880679Z           ]
2026-06-21T09:42:01.4880990Z         }
2026-06-21T09:42:01.4881413Z       }
2026-06-21T09:42:01.4881714Z     },
2026-06-21T09:42:01.4882019Z     {
2026-06-21T09:42:01.4882377Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-21T09:42:01.4888053Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-21T09:42:01.4893449Z       "requiredStages": [
2026-06-21T09:42:01.4893816Z         "doc",
2026-06-21T09:42:01.4894145Z         "impl",
2026-06-21T09:42:01.4894469Z         "unit"
2026-06-21T09:42:01.4894793Z       ],
2026-06-21T09:42:01.4895118Z       "stages": {
2026-06-21T09:42:01.4895451Z         "doc": {
2026-06-21T09:42:01.4895785Z           "complete": true,
2026-06-21T09:42:01.4896165Z           "evidence": [
2026-06-21T09:42:01.4896519Z             {
2026-06-21T09:42:01.4896882Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.4897325Z               "line": 395
2026-06-21T09:42:01.4897691Z             }
2026-06-21T09:42:01.4898015Z           ]
2026-06-21T09:42:01.4898315Z         },
2026-06-21T09:42:01.4898627Z         "impl": {
2026-06-21T09:42:01.4899047Z           "complete": true,
2026-06-21T09:42:01.4899420Z           "evidence": [
2026-06-21T09:42:01.4899787Z             {
2026-06-21T09:42:01.4900148Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.4900601Z               "line": 75
2026-06-21T09:42:01.4900955Z             }
2026-06-21T09:42:01.4901287Z           ]
2026-06-21T09:42:01.4901594Z         },
2026-06-21T09:42:01.4901909Z         "int": {
2026-06-21T09:42:01.4902238Z           "complete": false,
2026-06-21T09:42:01.4902626Z           "evidence": []
2026-06-21T09:42:01.4902983Z         },
2026-06-21T09:42:01.4903293Z         "unit": {
2026-06-21T09:42:01.4903641Z           "complete": true,
2026-06-21T09:42:01.4904014Z           "evidence": [
2026-06-21T09:42:01.4904362Z             {
2026-06-21T09:42:01.4904729Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.4905183Z               "line": 632
2026-06-21T09:42:01.4905540Z             }
2026-06-21T09:42:01.4905869Z           ]
2026-06-21T09:42:01.4906175Z         }
2026-06-21T09:42:01.4906480Z       }
2026-06-21T09:42:01.4906788Z     },
2026-06-21T09:42:01.4907098Z     {
2026-06-21T09:42:01.4907456Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-21T09:42:01.4908028Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-21T09:42:01.4908576Z       "requiredStages": [
2026-06-21T09:42:01.4909032Z         "impl",
2026-06-21T09:42:01.4909384Z         "unit"
2026-06-21T09:42:01.4909713Z       ],
2026-06-21T09:42:01.4910032Z       "stages": {
2026-06-21T09:42:01.4910375Z         "doc": {
2026-06-21T09:42:01.4910766Z           "complete": false,
2026-06-21T09:42:01.4911277Z           "evidence": []
2026-06-21T09:42:01.4911649Z         },
2026-06-21T09:42:01.4911971Z         "impl": {
2026-06-21T09:42:01.4912397Z           "complete": true,
2026-06-21T09:42:01.4912765Z           "evidence": [
2026-06-21T09:42:01.4913113Z             {
2026-06-21T09:42:01.4913486Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.4913928Z               "line": 172
2026-06-21T09:42:01.4914286Z             },
2026-06-21T09:42:01.4914607Z             {
2026-06-21T09:42:01.4914974Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.4915414Z               "line": 18
2026-06-21T09:42:01.4915767Z             },
2026-06-21T09:42:01.4916077Z             {
2026-06-21T09:42:01.4916438Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.4916891Z               "line": 100
2026-06-21T09:42:01.4917252Z             }
2026-06-21T09:42:01.4917571Z           ]
2026-06-21T09:42:01.4917881Z         },
2026-06-21T09:42:01.4918191Z         "int": {
2026-06-21T09:42:01.4918525Z           "complete": false,
2026-06-21T09:42:01.4918908Z           "evidence": []
2026-06-21T09:42:01.4923639Z         },
2026-06-21T09:42:01.4924056Z         "unit": {
2026-06-21T09:42:01.4924418Z           "complete": true,
2026-06-21T09:42:01.4924803Z           "evidence": [
2026-06-21T09:42:01.4925153Z             {
2026-06-21T09:42:01.4925548Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.4926017Z               "line": 857
2026-06-21T09:42:01.4926374Z             },
2026-06-21T09:42:01.4926698Z             {
2026-06-21T09:42:01.4927064Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.4927509Z               "line": 161
2026-06-21T09:42:01.4927869Z             },
2026-06-21T09:42:01.4928180Z             {
2026-06-21T09:42:01.4928539Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.4929071Z               "line": 233
2026-06-21T09:42:01.4929439Z             }
2026-06-21T09:42:01.4929782Z           ]
2026-06-21T09:42:01.4930100Z         }
2026-06-21T09:42:01.4930417Z       }
2026-06-21T09:42:01.4930723Z     },
2026-06-21T09:42:01.4931032Z     {
2026-06-21T09:42:01.4931376Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-21T09:42:01.4932355Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-21T09:42:01.4933289Z       "requiredStages": [
2026-06-21T09:42:01.4933657Z         "impl",
2026-06-21T09:42:01.4933986Z         "unit"
2026-06-21T09:42:01.4934301Z       ],
2026-06-21T09:42:01.4934611Z       "stages": {
2026-06-21T09:42:01.4934940Z         "doc": {
2026-06-21T09:42:01.4935284Z           "complete": true,
2026-06-21T09:42:01.4935639Z           "evidence": [
2026-06-21T09:42:01.4935996Z             {
2026-06-21T09:42:01.4936357Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.4936790Z               "line": 220
2026-06-21T09:42:01.4937144Z             }
2026-06-21T09:42:01.4937464Z           ]
2026-06-21T09:42:01.4937774Z         },
2026-06-21T09:42:01.4938084Z         "impl": {
2026-06-21T09:42:01.4938435Z           "complete": true,
2026-06-21T09:42:01.4938812Z           "evidence": [
2026-06-21T09:42:01.4939241Z             {
2026-06-21T09:42:01.4939617Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.4940076Z               "line": 316
2026-06-21T09:42:01.4940433Z             },
2026-06-21T09:42:01.4940760Z             {
2026-06-21T09:42:01.4941136Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.4941592Z               "line": 356
2026-06-21T09:42:01.4941946Z             },
2026-06-21T09:42:01.4942280Z             {
2026-06-21T09:42:01.4942657Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.4943114Z               "line": 578
2026-06-21T09:42:01.4943465Z             },
2026-06-21T09:42:01.4943787Z             {
2026-06-21T09:42:01.4944155Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:42:01.4944774Z               "line": 77
2026-06-21T09:42:01.4945228Z             }
2026-06-21T09:42:01.4945548Z           ]
2026-06-21T09:42:01.4945858Z         },
2026-06-21T09:42:01.4946161Z         "int": {
2026-06-21T09:42:01.4946512Z           "complete": false,
2026-06-21T09:42:01.4946889Z           "evidence": []
2026-06-21T09:42:01.4947237Z         },
2026-06-21T09:42:01.4947556Z         "unit": {
2026-06-21T09:42:01.4947895Z           "complete": true,
2026-06-21T09:42:01.4948271Z           "evidence": [
2026-06-21T09:42:01.4948615Z             {
2026-06-21T09:42:01.4949067Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.4949543Z               "line": 747
2026-06-21T09:42:01.4949896Z             },
2026-06-21T09:42:01.4950211Z             {
2026-06-21T09:42:01.4950579Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.4951031Z               "line": 785
2026-06-21T09:42:01.4951395Z             },
2026-06-21T09:42:01.4951714Z             {
2026-06-21T09:42:01.4952081Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:42:01.4952535Z               "line": 166
2026-06-21T09:42:01.4952874Z             }
2026-06-21T09:42:01.4953203Z           ]
2026-06-21T09:42:01.4953513Z         }
2026-06-21T09:42:01.4953819Z       }
2026-06-21T09:42:01.4954126Z     },
2026-06-21T09:42:01.4954433Z     {
2026-06-21T09:42:01.4954782Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-21T09:42:01.4955988Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-21T09:42:01.4957135Z       "requiredStages": [
2026-06-21T09:42:01.4957496Z         "impl",
2026-06-21T09:42:01.4957825Z         "unit"
2026-06-21T09:42:01.4958140Z       ],
2026-06-21T09:42:01.4958460Z       "stages": {
2026-06-21T09:42:01.4958789Z         "doc": {
2026-06-21T09:42:01.4959199Z           "complete": false,
2026-06-21T09:42:01.4959579Z           "evidence": []
2026-06-21T09:42:01.4959928Z         },
2026-06-21T09:42:01.4960233Z         "impl": {
2026-06-21T09:42:01.4960581Z           "complete": true,
2026-06-21T09:42:01.4960957Z           "evidence": [
2026-06-21T09:42:01.4961295Z             {
2026-06-21T09:42:01.4961676Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T09:42:01.4962146Z               "line": 22
2026-06-21T09:42:01.4962499Z             },
2026-06-21T09:42:01.4962823Z             {
2026-06-21T09:42:01.4963176Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.4963628Z               "line": 487
2026-06-21T09:42:01.4963972Z             },
2026-06-21T09:42:01.4964282Z             {
2026-06-21T09:42:01.4964657Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T09:42:01.4965109Z               "line": 17
2026-06-21T09:42:01.4965461Z             },
2026-06-21T09:42:01.4965786Z             {
2026-06-21T09:42:01.4966152Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T09:42:01.4966621Z               "line": 147
2026-06-21T09:42:01.4966964Z             },
2026-06-21T09:42:01.4967291Z             {
2026-06-21T09:42:01.4967681Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.4968147Z               "line": 226
2026-06-21T09:42:01.4968505Z             },
2026-06-21T09:42:01.4968829Z             {
2026-06-21T09:42:01.4969301Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.4969784Z               "line": 251
2026-06-21T09:42:01.4970144Z             },
2026-06-21T09:42:01.4970463Z             {
2026-06-21T09:42:01.4970850Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.4971331Z               "line": 277
2026-06-21T09:42:01.4971689Z             },
2026-06-21T09:42:01.4971999Z             {
2026-06-21T09:42:01.4972360Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:42:01.4972939Z               "line": 124
2026-06-21T09:42:01.4973297Z             },
2026-06-21T09:42:01.4973717Z             {
2026-06-21T09:42:01.4974083Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:42:01.4974551Z               "line": 224
2026-06-21T09:42:01.4974900Z             }
2026-06-21T09:42:01.4975213Z           ]
2026-06-21T09:42:01.4975530Z         },
2026-06-21T09:42:01.4975839Z         "int": {
2026-06-21T09:42:01.4976179Z           "complete": false,
2026-06-21T09:42:01.4976561Z           "evidence": []
2026-06-21T09:42:01.4976909Z         },
2026-06-21T09:42:01.4977228Z         "unit": {
2026-06-21T09:42:01.4977581Z           "complete": true,
2026-06-21T09:42:01.4977949Z           "evidence": [
2026-06-21T09:42:01.4978354Z             {
2026-06-21T09:42:01.4978794Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T09:42:01.4979384Z               "line": 63
2026-06-21T09:42:01.4979790Z             },
2026-06-21T09:42:01.4980156Z             {
2026-06-21T09:42:01.4980570Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T09:42:01.4981091Z               "line": 73
2026-06-21T09:42:01.4981496Z             },
2026-06-21T09:42:01.4981867Z             {
2026-06-21T09:42:01.4982298Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T09:42:01.4982815Z               "line": 85
2026-06-21T09:42:01.4983218Z             },
2026-06-21T09:42:01.4983585Z             {
2026-06-21T09:42:01.4983949Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T09:42:01.4984414Z               "line": 346
2026-06-21T09:42:01.4984768Z             },
2026-06-21T09:42:01.4985082Z             {
2026-06-21T09:42:01.4985451Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T09:42:01.4985915Z               "line": 281
2026-06-21T09:42:01.4986262Z             },
2026-06-21T09:42:01.4986582Z             {
2026-06-21T09:42:01.4986953Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T09:42:01.4987426Z               "line": 322
2026-06-21T09:42:01.4987784Z             },
2026-06-21T09:42:01.4988099Z             {
2026-06-21T09:42:01.4988476Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T09:42:01.4989044Z               "line": 360
2026-06-21T09:42:01.4989391Z             },
2026-06-21T09:42:01.4989706Z             {
2026-06-21T09:42:01.4990097Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.4990570Z               "line": 688
2026-06-21T09:42:01.4990933Z             },
2026-06-21T09:42:01.4991265Z             {
2026-06-21T09:42:01.4991642Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:42:01.4992103Z               "line": 397
2026-06-21T09:42:01.4992465Z             },
2026-06-21T09:42:01.4992780Z             {
2026-06-21T09:42:01.4993153Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:42:01.4993617Z               "line": 440
2026-06-21T09:42:01.4993969Z             }
2026-06-21T09:42:01.4994279Z           ]
2026-06-21T09:42:01.4994599Z         }
2026-06-21T09:42:01.4994904Z       }
2026-06-21T09:42:01.4995204Z     },
2026-06-21T09:42:01.4995514Z     {
2026-06-21T09:42:01.4995848Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-21T09:42:01.4996456Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-21T09:42:01.4997089Z       "requiredStages": [
2026-06-21T09:42:01.4997447Z         "impl",
2026-06-21T09:42:01.4997770Z         "unit"
2026-06-21T09:42:01.4998095Z       ],
2026-06-21T09:42:01.4998409Z       "stages": {
2026-06-21T09:42:01.4998734Z         "doc": {
2026-06-21T09:42:01.4999145Z           "complete": false,
2026-06-21T09:42:01.4999532Z           "evidence": []
2026-06-21T09:42:01.4999885Z         },
2026-06-21T09:42:01.5000205Z         "impl": {
2026-06-21T09:42:01.5000549Z           "complete": true,
2026-06-21T09:42:01.5000920Z           "evidence": [
2026-06-21T09:42:01.5001276Z             {
2026-06-21T09:42:01.5001805Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T09:42:01.5002263Z               "line": 169
2026-06-21T09:42:01.5002716Z             }
2026-06-21T09:42:01.5003030Z           ]
2026-06-21T09:42:01.5003345Z         },
2026-06-21T09:42:01.5003660Z         "int": {
2026-06-21T09:42:01.5004007Z           "complete": true,
2026-06-21T09:42:01.5004377Z           "evidence": [
2026-06-21T09:42:01.5004735Z             {
2026-06-21T09:42:01.5005102Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T09:42:01.5005554Z               "line": 44
2026-06-21T09:42:01.5005907Z             },
2026-06-21T09:42:01.5006232Z             {
2026-06-21T09:42:01.5006600Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T09:42:01.5007049Z               "line": 66
2026-06-21T09:42:01.5007392Z             }
2026-06-21T09:42:01.5007702Z           ]
2026-06-21T09:42:01.5008017Z         },
2026-06-21T09:42:01.5008335Z         "unit": {
2026-06-21T09:42:01.5008693Z           "complete": true,
2026-06-21T09:42:01.5009219Z           "evidence": [
2026-06-21T09:42:01.5009555Z             {
2026-06-21T09:42:01.5009931Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T09:42:01.5010368Z               "line": 186
2026-06-21T09:42:01.5010716Z             },
2026-06-21T09:42:01.5011036Z             {
2026-06-21T09:42:01.5011404Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T09:42:01.5011851Z               "line": 238
2026-06-21T09:42:01.5012213Z             },
2026-06-21T09:42:01.5012522Z             {
2026-06-21T09:42:01.5012899Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T09:42:01.5013353Z               "line": 266
2026-06-21T09:42:01.5013701Z             }
2026-06-21T09:42:01.5014012Z           ]
2026-06-21T09:42:01.5014317Z         }
2026-06-21T09:42:01.5014620Z       }
2026-06-21T09:42:01.5014927Z     },
2026-06-21T09:42:01.5015232Z     {
2026-06-21T09:42:01.5015591Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-21T09:42:01.5022464Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-21T09:42:01.5028822Z       "requiredStages": [],
2026-06-21T09:42:01.5029289Z       "stages": {
2026-06-21T09:42:01.5029623Z         "doc": {
2026-06-21T09:42:01.5029958Z           "complete": false,
2026-06-21T09:42:01.5030339Z           "evidence": []
2026-06-21T09:42:01.5030699Z         },
2026-06-21T09:42:01.5031013Z         "impl": {
2026-06-21T09:42:01.5031365Z           "complete": false,
2026-06-21T09:42:01.5031737Z           "evidence": []
2026-06-21T09:42:01.5032085Z         },
2026-06-21T09:42:01.5032400Z         "int": {
2026-06-21T09:42:01.5032858Z           "complete": false,
2026-06-21T09:42:01.5033240Z           "evidence": []
2026-06-21T09:42:01.5033597Z         },
2026-06-21T09:42:01.5034005Z         "unit": {
2026-06-21T09:42:01.5034348Z           "complete": false,
2026-06-21T09:42:01.5034735Z           "evidence": []
2026-06-21T09:42:01.5035093Z         }
2026-06-21T09:42:01.5035408Z       }
2026-06-21T09:42:01.5035716Z     },
2026-06-21T09:42:01.5036009Z     {
2026-06-21T09:42:01.5036372Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-21T09:42:01.5057526Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-21T09:42:01.5076747Z       "requiredStages": [
2026-06-21T09:42:01.5077109Z         "doc",
2026-06-21T09:42:01.5077433Z         "impl",
2026-06-21T09:42:01.5077757Z         "unit",
2026-06-21T09:42:01.5078084Z         "int"
2026-06-21T09:42:01.5078399Z       ],
2026-06-21T09:42:01.5078718Z       "stages": {
2026-06-21T09:42:01.5079108Z         "doc": {
2026-06-21T09:42:01.5079447Z           "complete": true,
2026-06-21T09:42:01.5079823Z           "evidence": [
2026-06-21T09:42:01.5080172Z             {
2026-06-21T09:42:01.5080526Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.5080956Z               "line": 468
2026-06-21T09:42:01.5081308Z             }
2026-06-21T09:42:01.5081628Z           ]
2026-06-21T09:42:01.5081943Z         },
2026-06-21T09:42:01.5082252Z         "impl": {
2026-06-21T09:42:01.5082609Z           "complete": true,
2026-06-21T09:42:01.5082986Z           "evidence": [
2026-06-21T09:42:01.5083338Z             {
2026-06-21T09:42:01.5083713Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.5084171Z               "line": 342
2026-06-21T09:42:01.5084524Z             },
2026-06-21T09:42:01.5084852Z             {
2026-06-21T09:42:01.5085228Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.5085678Z               "line": 1188
2026-06-21T09:42:01.5086045Z             },
2026-06-21T09:42:01.5086363Z             {
2026-06-21T09:42:01.5086735Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5087192Z               "line": 793
2026-06-21T09:42:01.5087551Z             }
2026-06-21T09:42:01.5087865Z           ]
2026-06-21T09:42:01.5088175Z         },
2026-06-21T09:42:01.5088483Z         "int": {
2026-06-21T09:42:01.5088829Z           "complete": true,
2026-06-21T09:42:01.5089273Z           "evidence": [
2026-06-21T09:42:01.5089626Z             {
2026-06-21T09:42:01.5090011Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.5090489Z               "line": 1163
2026-06-21T09:42:01.5090842Z             },
2026-06-21T09:42:01.5091157Z             {
2026-06-21T09:42:01.5091530Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.5091982Z               "line": 1264
2026-06-21T09:42:01.5092345Z             },
2026-06-21T09:42:01.5092669Z             {
2026-06-21T09:42:01.5093037Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:42:01.5093498Z               "line": 1169
2026-06-21T09:42:01.5093855Z             }
2026-06-21T09:42:01.5094172Z           ]
2026-06-21T09:42:01.5094487Z         },
2026-06-21T09:42:01.5094802Z         "unit": {
2026-06-21T09:42:01.5095144Z           "complete": true,
2026-06-21T09:42:01.5095513Z           "evidence": [
2026-06-21T09:42:01.5095856Z             {
2026-06-21T09:42:01.5096342Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5096798Z               "line": 2850
2026-06-21T09:42:01.5097286Z             }
2026-06-21T09:42:01.5097605Z           ]
2026-06-21T09:42:01.5097924Z         }
2026-06-21T09:42:01.5102232Z       }
2026-06-21T09:42:01.5102629Z     },
2026-06-21T09:42:01.5102944Z     {
2026-06-21T09:42:01.5103301Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-21T09:42:01.5104312Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-21T09:42:01.5105249Z       "requiredStages": [
2026-06-21T09:42:01.5105615Z         "impl",
2026-06-21T09:42:01.5105943Z         "unit",
2026-06-21T09:42:01.5106258Z         "int"
2026-06-21T09:42:01.5106578Z       ],
2026-06-21T09:42:01.5106892Z       "stages": {
2026-06-21T09:42:01.5107217Z         "doc": {
2026-06-21T09:42:01.5107550Z           "complete": false,
2026-06-21T09:42:01.5107959Z           "evidence": []
2026-06-21T09:42:01.5108317Z         },
2026-06-21T09:42:01.5108632Z         "impl": {
2026-06-21T09:42:01.5109043Z           "complete": true,
2026-06-21T09:42:01.5109415Z           "evidence": [
2026-06-21T09:42:01.5109760Z             {
2026-06-21T09:42:01.5110140Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.5110608Z               "line": 178
2026-06-21T09:42:01.5110961Z             },
2026-06-21T09:42:01.5111281Z             {
2026-06-21T09:42:01.5111652Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.5112124Z               "line": 226
2026-06-21T09:42:01.5112461Z             },
2026-06-21T09:42:01.5112787Z             {
2026-06-21T09:42:01.5113146Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.5113594Z               "line": 79
2026-06-21T09:42:01.5113942Z             },
2026-06-21T09:42:01.5114261Z             {
2026-06-21T09:42:01.5114619Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:42:01.5115066Z               "line": 52
2026-06-21T09:42:01.5115422Z             },
2026-06-21T09:42:01.5115727Z             {
2026-06-21T09:42:01.5116085Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.5116533Z               "line": 263
2026-06-21T09:42:01.5116890Z             },
2026-06-21T09:42:01.5117043Z             {
2026-06-21T09:42:01.5117243Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:42:01.5117401Z               "line": 27
2026-06-21T09:42:01.5117562Z             },
2026-06-21T09:42:01.5117711Z             {
2026-06-21T09:42:01.5117919Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:42:01.5118078Z               "line": 79
2026-06-21T09:42:01.5118234Z             },
2026-06-21T09:42:01.5118377Z             {
2026-06-21T09:42:01.5118577Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:42:01.5118730Z               "line": 102
2026-06-21T09:42:01.5118887Z             },
2026-06-21T09:42:01.5119130Z             {
2026-06-21T09:42:01.5119331Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5119497Z               "line": 116
2026-06-21T09:42:01.5119656Z             }
2026-06-21T09:42:01.5119792Z           ]
2026-06-21T09:42:01.5119951Z         },
2026-06-21T09:42:01.5120092Z         "int": {
2026-06-21T09:42:01.5120254Z           "complete": true,
2026-06-21T09:42:01.5120414Z           "evidence": [
2026-06-21T09:42:01.5120562Z             {
2026-06-21T09:42:01.5120791Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T09:42:01.5120939Z               "line": 43
2026-06-21T09:42:01.5121091Z             }
2026-06-21T09:42:01.5121240Z           ]
2026-06-21T09:42:01.5121396Z         },
2026-06-21T09:42:01.5121541Z         "unit": {
2026-06-21T09:42:01.5121701Z           "complete": true,
2026-06-21T09:42:01.5121855Z           "evidence": [
2026-06-21T09:42:01.5122006Z             {
2026-06-21T09:42:01.5122384Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.5122532Z               "line": 678
2026-06-21T09:42:01.5122785Z             },
2026-06-21T09:42:01.5122936Z             {
2026-06-21T09:42:01.5123141Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.5123305Z               "line": 495
2026-06-21T09:42:01.5123454Z             },
2026-06-21T09:42:01.5123615Z             {
2026-06-21T09:42:01.5123820Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:42:01.5123987Z               "line": 124
2026-06-21T09:42:01.5124140Z             },
2026-06-21T09:42:01.5124297Z             {
2026-06-21T09:42:01.5124507Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:42:01.5124655Z               "line": 143
2026-06-21T09:42:01.5124807Z             },
2026-06-21T09:42:01.5124960Z             {
2026-06-21T09:42:01.5125164Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:42:01.5125314Z               "line": 160
2026-06-21T09:42:01.5125465Z             },
2026-06-21T09:42:01.5125622Z             {
2026-06-21T09:42:01.5125805Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:42:01.5125972Z               "line": 187
2026-06-21T09:42:01.5126120Z             },
2026-06-21T09:42:01.5126272Z             {
2026-06-21T09:42:01.5126472Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:42:01.5126631Z               "line": 206
2026-06-21T09:42:01.5126787Z             },
2026-06-21T09:42:01.5126932Z             {
2026-06-21T09:42:01.5127130Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5127289Z               "line": 229
2026-06-21T09:42:01.5127441Z             }
2026-06-21T09:42:01.5127590Z           ]
2026-06-21T09:42:01.5127741Z         }
2026-06-21T09:42:01.5127895Z       }
2026-06-21T09:42:01.5128046Z     },
2026-06-21T09:42:01.5128200Z     {
2026-06-21T09:42:01.5128408Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-21T09:42:01.5129519Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-21T09:42:01.5129700Z       "requiredStages": [
2026-06-21T09:42:01.5129858Z         "impl",
2026-06-21T09:42:01.5130010Z         "unit"
2026-06-21T09:42:01.5130163Z       ],
2026-06-21T09:42:01.5130320Z       "stages": {
2026-06-21T09:42:01.5130469Z         "doc": {
2026-06-21T09:42:01.5130633Z           "complete": false,
2026-06-21T09:42:01.5130795Z           "evidence": []
2026-06-21T09:42:01.5130950Z         },
2026-06-21T09:42:01.5131108Z         "impl": {
2026-06-21T09:42:01.5131275Z           "complete": true,
2026-06-21T09:42:01.5131437Z           "evidence": [
2026-06-21T09:42:01.5131585Z             {
2026-06-21T09:42:01.5131796Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5131966Z               "line": 1257
2026-06-21T09:42:01.5132119Z             },
2026-06-21T09:42:01.5132271Z             {
2026-06-21T09:42:01.5132486Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5132648Z               "line": 1511
2026-06-21T09:42:01.5132805Z             }
2026-06-21T09:42:01.5132954Z           ]
2026-06-21T09:42:01.5133106Z         },
2026-06-21T09:42:01.5133259Z         "int": {
2026-06-21T09:42:01.5133431Z           "complete": false,
2026-06-21T09:42:01.5133591Z           "evidence": []
2026-06-21T09:42:01.5133743Z         },
2026-06-21T09:42:01.5133889Z         "unit": {
2026-06-21T09:42:01.5134061Z           "complete": true,
2026-06-21T09:42:01.5134227Z           "evidence": [
2026-06-21T09:42:01.5134376Z             {
2026-06-21T09:42:01.5134591Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T09:42:01.5134748Z               "line": 161
2026-06-21T09:42:01.5134895Z             }
2026-06-21T09:42:01.5135052Z           ]
2026-06-21T09:42:01.5135316Z         }
2026-06-21T09:42:01.5135467Z       }
2026-06-21T09:42:01.5135621Z     },
2026-06-21T09:42:01.5135773Z     {
2026-06-21T09:42:01.5136053Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-21T09:42:01.5138717Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-21T09:42:01.5138901Z       "requiredStages": [
2026-06-21T09:42:01.5139126Z         "impl",
2026-06-21T09:42:01.5139278Z         "unit"
2026-06-21T09:42:01.5139426Z       ],
2026-06-21T09:42:01.5139592Z       "stages": {
2026-06-21T09:42:01.5139737Z         "doc": {
2026-06-21T09:42:01.5139902Z           "complete": false,
2026-06-21T09:42:01.5140061Z           "evidence": []
2026-06-21T09:42:01.5140208Z         },
2026-06-21T09:42:01.5140371Z         "impl": {
2026-06-21T09:42:01.5140537Z           "complete": true,
2026-06-21T09:42:01.5140705Z           "evidence": [
2026-06-21T09:42:01.5140860Z             {
2026-06-21T09:42:01.5141071Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:42:01.5141241Z               "line": 257
2026-06-21T09:42:01.5141389Z             }
2026-06-21T09:42:01.5141549Z           ]
2026-06-21T09:42:01.5141692Z         },
2026-06-21T09:42:01.5141854Z         "int": {
2026-06-21T09:42:01.5142022Z           "complete": false,
2026-06-21T09:42:01.5142178Z           "evidence": []
2026-06-21T09:42:01.5142322Z         },
2026-06-21T09:42:01.5142474Z         "unit": {
2026-06-21T09:42:01.5142637Z           "complete": true,
2026-06-21T09:42:01.5142803Z           "evidence": [
2026-06-21T09:42:01.5142951Z             {
2026-06-21T09:42:01.5143165Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:42:01.5143323Z               "line": 360
2026-06-21T09:42:01.5143470Z             }
2026-06-21T09:42:01.5143624Z           ]
2026-06-21T09:42:01.5143780Z         }
2026-06-21T09:42:01.5143925Z       }
2026-06-21T09:42:01.5144080Z     },
2026-06-21T09:42:01.5144232Z     {
2026-06-21T09:42:01.5144430Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-21T09:42:01.5147136Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-21T09:42:01.5147316Z       "requiredStages": [
2026-06-21T09:42:01.5147470Z         "impl",
2026-06-21T09:42:01.5147640Z         "unit"
2026-06-21T09:42:01.5147789Z       ],
2026-06-21T09:42:01.5147941Z       "stages": {
2026-06-21T09:42:01.5148095Z         "doc": {
2026-06-21T09:42:01.5148265Z           "complete": false,
2026-06-21T09:42:01.5148429Z           "evidence": []
2026-06-21T09:42:01.5148575Z         },
2026-06-21T09:42:01.5148739Z         "impl": {
2026-06-21T09:42:01.5148899Z           "complete": true,
2026-06-21T09:42:01.5149152Z           "evidence": [
2026-06-21T09:42:01.5149320Z             {
2026-06-21T09:42:01.5149542Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.5149705Z               "line": 1018
2026-06-21T09:42:01.5149852Z             },
2026-06-21T09:42:01.5150015Z             {
2026-06-21T09:42:01.5150349Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.5150510Z               "line": 283
2026-06-21T09:42:01.5150758Z             },
2026-06-21T09:42:01.5150916Z             {
2026-06-21T09:42:01.5151116Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.5151275Z               "line": 316
2026-06-21T09:42:01.5151430Z             },
2026-06-21T09:42:01.5151580Z             {
2026-06-21T09:42:01.5151787Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T09:42:01.5151935Z               "line": 26
2026-06-21T09:42:01.5152085Z             }
2026-06-21T09:42:01.5152247Z           ]
2026-06-21T09:42:01.5152400Z         },
2026-06-21T09:42:01.5152553Z         "int": {
2026-06-21T09:42:01.5152729Z           "complete": false,
2026-06-21T09:42:01.5152911Z           "evidence": []
2026-06-21T09:42:01.5153063Z         },
2026-06-21T09:42:01.5153211Z         "unit": {
2026-06-21T09:42:01.5153382Z           "complete": true,
2026-06-21T09:42:01.5153540Z           "evidence": [
2026-06-21T09:42:01.5153706Z             {
2026-06-21T09:42:01.5153911Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T09:42:01.5154069Z               "line": 271
2026-06-21T09:42:01.5154222Z             },
2026-06-21T09:42:01.5154374Z             {
2026-06-21T09:42:01.5154574Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T09:42:01.5154730Z               "line": 348
2026-06-21T09:42:01.5154891Z             }
2026-06-21T09:42:01.5155033Z           ]
2026-06-21T09:42:01.5155186Z         }
2026-06-21T09:42:01.5155338Z       }
2026-06-21T09:42:01.5155497Z     },
2026-06-21T09:42:01.5155653Z     {
2026-06-21T09:42:01.5155839Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-21T09:42:01.5156145Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-21T09:42:01.5156326Z       "requiredStages": [
2026-06-21T09:42:01.5156550Z         "impl",
2026-06-21T09:42:01.5156840Z         "unit"
2026-06-21T09:42:01.5157085Z       ],
2026-06-21T09:42:01.5157331Z       "stages": {
2026-06-21T09:42:01.5157481Z         "doc": {
2026-06-21T09:42:01.5157657Z           "complete": false,
2026-06-21T09:42:01.5157833Z           "evidence": []
2026-06-21T09:42:01.5157992Z         },
2026-06-21T09:42:01.5158162Z         "impl": {
2026-06-21T09:42:01.5158321Z           "complete": true,
2026-06-21T09:42:01.5158491Z           "evidence": [
2026-06-21T09:42:01.5158660Z             {
2026-06-21T09:42:01.5158864Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5159159Z               "line": 40
2026-06-21T09:42:01.5159332Z             },
2026-06-21T09:42:01.5159493Z             {
2026-06-21T09:42:01.5159698Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5159857Z               "line": 103
2026-06-21T09:42:01.5160017Z             },
2026-06-21T09:42:01.5160174Z             {
2026-06-21T09:42:01.5160374Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5160536Z               "line": 218
2026-06-21T09:42:01.5160680Z             },
2026-06-21T09:42:01.5160837Z             {
2026-06-21T09:42:01.5161036Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5161205Z               "line": 323
2026-06-21T09:42:01.5161365Z             }
2026-06-21T09:42:01.5161525Z           ]
2026-06-21T09:42:01.5161685Z         },
2026-06-21T09:42:01.5161849Z         "int": {
2026-06-21T09:42:01.5162019Z           "complete": false,
2026-06-21T09:42:01.5162220Z           "evidence": []
2026-06-21T09:42:01.5162376Z         },
2026-06-21T09:42:01.5162532Z         "unit": {
2026-06-21T09:42:01.5162692Z           "complete": true,
2026-06-21T09:42:01.5162842Z           "evidence": [
2026-06-21T09:42:01.5162993Z             {
2026-06-21T09:42:01.5163194Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5163355Z               "line": 361
2026-06-21T09:42:01.5163509Z             },
2026-06-21T09:42:01.5163651Z             {
2026-06-21T09:42:01.5164033Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5164200Z               "line": 433
2026-06-21T09:42:01.5164443Z             },
2026-06-21T09:42:01.5164605Z             {
2026-06-21T09:42:01.5164800Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5164964Z               "line": 496
2026-06-21T09:42:01.5165115Z             },
2026-06-21T09:42:01.5165276Z             {
2026-06-21T09:42:01.5165470Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5165641Z               "line": 517
2026-06-21T09:42:01.5165799Z             }
2026-06-21T09:42:01.5165956Z           ]
2026-06-21T09:42:01.5166109Z         }
2026-06-21T09:42:01.5166271Z       }
2026-06-21T09:42:01.5166457Z     },
2026-06-21T09:42:01.5166610Z     {
2026-06-21T09:42:01.5166805Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-21T09:42:01.5170353Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-21T09:42:01.5170526Z       "requiredStages": [
2026-06-21T09:42:01.5170677Z         "impl",
2026-06-21T09:42:01.5170835Z         "unit"
2026-06-21T09:42:01.5170982Z       ],
2026-06-21T09:42:01.5171141Z       "stages": {
2026-06-21T09:42:01.5171282Z         "doc": {
2026-06-21T09:42:01.5171460Z           "complete": false,
2026-06-21T09:42:01.5171630Z           "evidence": []
2026-06-21T09:42:01.5171784Z         },
2026-06-21T09:42:01.5171945Z         "impl": {
2026-06-21T09:42:01.5172108Z           "complete": true,
2026-06-21T09:42:01.5172274Z           "evidence": [
2026-06-21T09:42:01.5172423Z             {
2026-06-21T09:42:01.5172637Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.5172794Z               "line": 402
2026-06-21T09:42:01.5172950Z             },
2026-06-21T09:42:01.5173102Z             {
2026-06-21T09:42:01.5173311Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.5173473Z               "line": 446
2026-06-21T09:42:01.5173616Z             }
2026-06-21T09:42:01.5173764Z           ]
2026-06-21T09:42:01.5173925Z         },
2026-06-21T09:42:01.5174078Z         "int": {
2026-06-21T09:42:01.5174245Z           "complete": false,
2026-06-21T09:42:01.5174407Z           "evidence": []
2026-06-21T09:42:01.5174559Z         },
2026-06-21T09:42:01.5174707Z         "unit": {
2026-06-21T09:42:01.5174864Z           "complete": true,
2026-06-21T09:42:01.5175031Z           "evidence": [
2026-06-21T09:42:01.5175179Z             {
2026-06-21T09:42:01.5175394Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.5175548Z               "line": 910
2026-06-21T09:42:01.5175703Z             }
2026-06-21T09:42:01.5175856Z           ]
2026-06-21T09:42:01.5176011Z         }
2026-06-21T09:42:01.5176168Z       }
2026-06-21T09:42:01.5176321Z     },
2026-06-21T09:42:01.5176478Z     {
2026-06-21T09:42:01.5176678Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-21T09:42:01.5176903Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-21T09:42:01.5177059Z       "requiredStages": [
2026-06-21T09:42:01.5177217Z         "impl",
2026-06-21T09:42:01.5177365Z         "unit"
2026-06-21T09:42:01.5177523Z       ],
2026-06-21T09:42:01.5177675Z       "stages": {
2026-06-21T09:42:01.5177829Z         "doc": {
2026-06-21T09:42:01.5177994Z           "complete": false,
2026-06-21T09:42:01.5178270Z           "evidence": []
2026-06-21T09:42:01.5178417Z         },
2026-06-21T09:42:01.5178667Z         "impl": {
2026-06-21T09:42:01.5178836Z           "complete": true,
2026-06-21T09:42:01.5179054Z           "evidence": [
2026-06-21T09:42:01.5179207Z             {
2026-06-21T09:42:01.5179413Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5179570Z               "line": 116
2026-06-21T09:42:01.5179732Z             },
2026-06-21T09:42:01.5179884Z             {
2026-06-21T09:42:01.5180085Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5180251Z               "line": 211
2026-06-21T09:42:01.5180400Z             }
2026-06-21T09:42:01.5180547Z           ]
2026-06-21T09:42:01.5180701Z         },
2026-06-21T09:42:01.5180851Z         "int": {
2026-06-21T09:42:01.5181015Z           "complete": false,
2026-06-21T09:42:01.5181175Z           "evidence": []
2026-06-21T09:42:01.5181323Z         },
2026-06-21T09:42:01.5181476Z         "unit": {
2026-06-21T09:42:01.5181648Z           "complete": true,
2026-06-21T09:42:01.5181810Z           "evidence": [
2026-06-21T09:42:01.5181963Z             {
2026-06-21T09:42:01.5182157Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5182320Z               "line": 388
2026-06-21T09:42:01.5182500Z             },
2026-06-21T09:42:01.5182659Z             {
2026-06-21T09:42:01.5182853Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5183016Z               "line": 469
2026-06-21T09:42:01.5183178Z             }
2026-06-21T09:42:01.5183322Z           ]
2026-06-21T09:42:01.5183468Z         }
2026-06-21T09:42:01.5183620Z       }
2026-06-21T09:42:01.5183775Z     },
2026-06-21T09:42:01.5183933Z     {
2026-06-21T09:42:01.5184128Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-21T09:42:01.5185774Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-21T09:42:01.5185954Z       "requiredStages": [
2026-06-21T09:42:01.5186108Z         "impl",
2026-06-21T09:42:01.5186263Z         "unit"
2026-06-21T09:42:01.5186421Z       ],
2026-06-21T09:42:01.5186576Z       "stages": {
2026-06-21T09:42:01.5186728Z         "doc": {
2026-06-21T09:42:01.5186896Z           "complete": true,
2026-06-21T09:42:01.5187057Z           "evidence": [
2026-06-21T09:42:01.5187201Z             {
2026-06-21T09:42:01.5187396Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.5187567Z               "line": 206
2026-06-21T09:42:01.5187715Z             }
2026-06-21T09:42:01.5187868Z           ]
2026-06-21T09:42:01.5188016Z         },
2026-06-21T09:42:01.5188168Z         "impl": {
2026-06-21T09:42:01.5188341Z           "complete": true,
2026-06-21T09:42:01.5188506Z           "evidence": [
2026-06-21T09:42:01.5188651Z             {
2026-06-21T09:42:01.5188864Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.5189105Z               "line": 691
2026-06-21T09:42:01.5189256Z             },
2026-06-21T09:42:01.5189405Z             {
2026-06-21T09:42:01.5189600Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.5189753Z               "line": 791
2026-06-21T09:42:01.5189910Z             },
2026-06-21T09:42:01.5190068Z             {
2026-06-21T09:42:01.5190273Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.5190434Z               "line": 1120
2026-06-21T09:42:01.5190592Z             },
2026-06-21T09:42:01.5190745Z             {
2026-06-21T09:42:01.5190960Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.5191117Z               "line": 184
2026-06-21T09:42:01.5191266Z             }
2026-06-21T09:42:01.5191421Z           ]
2026-06-21T09:42:01.5191688Z         },
2026-06-21T09:42:01.5191845Z         "int": {
2026-06-21T09:42:01.5192013Z           "complete": false,
2026-06-21T09:42:01.5192289Z           "evidence": []
2026-06-21T09:42:01.5192435Z         },
2026-06-21T09:42:01.5192599Z         "unit": {
2026-06-21T09:42:01.5192769Z           "complete": true,
2026-06-21T09:42:01.5192928Z           "evidence": [
2026-06-21T09:42:01.5193084Z             {
2026-06-21T09:42:01.5193285Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.5193447Z               "line": 1169
2026-06-21T09:42:01.5193595Z             },
2026-06-21T09:42:01.5193748Z             {
2026-06-21T09:42:01.5193971Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T09:42:01.5194133Z               "line": 44
2026-06-21T09:42:01.5194283Z             },
2026-06-21T09:42:01.5194431Z             {
2026-06-21T09:42:01.5194654Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T09:42:01.5194813Z               "line": 52
2026-06-21T09:42:01.5194969Z             },
2026-06-21T09:42:01.5195128Z             {
2026-06-21T09:42:01.5195317Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T09:42:01.5195490Z               "line": 57
2026-06-21T09:42:01.5195632Z             },
2026-06-21T09:42:01.5195795Z             {
2026-06-21T09:42:01.5196019Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T09:42:01.5196180Z               "line": 54
2026-06-21T09:42:01.5196334Z             }
2026-06-21T09:42:01.5196486Z           ]
2026-06-21T09:42:01.5196639Z         }
2026-06-21T09:42:01.5196782Z       }
2026-06-21T09:42:01.5196942Z     },
2026-06-21T09:42:01.5197085Z     {
2026-06-21T09:42:01.5197303Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-21T09:42:01.5197685Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-21T09:42:01.5197850Z       "requiredStages": [
2026-06-21T09:42:01.5198005Z         "impl",
2026-06-21T09:42:01.5198155Z         "unit"
2026-06-21T09:42:01.5198310Z       ],
2026-06-21T09:42:01.5198457Z       "stages": {
2026-06-21T09:42:01.5198615Z         "doc": {
2026-06-21T09:42:01.5198785Z           "complete": false,
2026-06-21T09:42:01.5198939Z           "evidence": []
2026-06-21T09:42:01.5199211Z         },
2026-06-21T09:42:01.5199367Z         "impl": {
2026-06-21T09:42:01.5199528Z           "complete": true,
2026-06-21T09:42:01.5199689Z           "evidence": [
2026-06-21T09:42:01.5199845Z             {
2026-06-21T09:42:01.5200055Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:42:01.5200213Z               "line": 26
2026-06-21T09:42:01.5200361Z             },
2026-06-21T09:42:01.5200508Z             {
2026-06-21T09:42:01.5200718Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:42:01.5200877Z               "line": 135
2026-06-21T09:42:01.5201042Z             },
2026-06-21T09:42:01.5201196Z             {
2026-06-21T09:42:01.5201414Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T09:42:01.5201586Z               "line": 26
2026-06-21T09:42:01.5201738Z             },
2026-06-21T09:42:01.5201896Z             {
2026-06-21T09:42:01.5202107Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T09:42:01.5202262Z               "line": 237
2026-06-21T09:42:01.5202428Z             }
2026-06-21T09:42:01.5202573Z           ]
2026-06-21T09:42:01.5202729Z         },
2026-06-21T09:42:01.5202882Z         "int": {
2026-06-21T09:42:01.5203058Z           "complete": false,
2026-06-21T09:42:01.5203211Z           "evidence": []
2026-06-21T09:42:01.5203364Z         },
2026-06-21T09:42:01.5203526Z         "unit": {
2026-06-21T09:42:01.5203683Z           "complete": true,
2026-06-21T09:42:01.5203845Z           "evidence": [
2026-06-21T09:42:01.5203988Z             {
2026-06-21T09:42:01.5204202Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:42:01.5204351Z               "line": 161
2026-06-21T09:42:01.5204503Z             },
2026-06-21T09:42:01.5204769Z             {
2026-06-21T09:42:01.5204967Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:42:01.5205219Z               "line": 170
2026-06-21T09:42:01.5205358Z             },
2026-06-21T09:42:01.5205511Z             {
2026-06-21T09:42:01.5205712Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:42:01.5205867Z               "line": 179
2026-06-21T09:42:01.5206022Z             },
2026-06-21T09:42:01.5206173Z             {
2026-06-21T09:42:01.5206379Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:42:01.5206540Z               "line": 190
2026-06-21T09:42:01.5206698Z             },
2026-06-21T09:42:01.5206855Z             {
2026-06-21T09:42:01.5207041Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:42:01.5207209Z               "line": 199
2026-06-21T09:42:01.5207356Z             },
2026-06-21T09:42:01.5207507Z             {
2026-06-21T09:42:01.5207706Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:42:01.5207873Z               "line": 216
2026-06-21T09:42:01.5208021Z             },
2026-06-21T09:42:01.5208172Z             {
2026-06-21T09:42:01.5208369Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:42:01.5208512Z               "line": 242
2026-06-21T09:42:01.5208670Z             },
2026-06-21T09:42:01.5208821Z             {
2026-06-21T09:42:01.5209093Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:42:01.5209260Z               "line": 295
2026-06-21T09:42:01.5209403Z             },
2026-06-21T09:42:01.5209552Z             {
2026-06-21T09:42:01.5209742Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:42:01.5209904Z               "line": 244
2026-06-21T09:42:01.5210055Z             },
2026-06-21T09:42:01.5210217Z             {
2026-06-21T09:42:01.5210434Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T09:42:01.5210587Z               "line": 265
2026-06-21T09:42:01.5210744Z             },
2026-06-21T09:42:01.5210898Z             {
2026-06-21T09:42:01.5211112Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T09:42:01.5211268Z               "line": 293
2026-06-21T09:42:01.5211422Z             },
2026-06-21T09:42:01.5211583Z             {
2026-06-21T09:42:01.5211785Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T09:42:01.5211946Z               "line": 317
2026-06-21T09:42:01.5212099Z             },
2026-06-21T09:42:01.5212251Z             {
2026-06-21T09:42:01.5212461Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T09:42:01.5212623Z               "line": 327
2026-06-21T09:42:01.5212771Z             },
2026-06-21T09:42:01.5212922Z             {
2026-06-21T09:42:01.5213128Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:42:01.5213280Z               "line": 540
2026-06-21T09:42:01.5213433Z             }
2026-06-21T09:42:01.5213584Z           ]
2026-06-21T09:42:01.5213743Z         }
2026-06-21T09:42:01.5213899Z       }
2026-06-21T09:42:01.5214053Z     },
2026-06-21T09:42:01.5214205Z     {
2026-06-21T09:42:01.5214415Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-21T09:42:01.5221653Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-21T09:42:01.5222076Z       "requiredStages": [],
2026-06-21T09:42:01.5222229Z       "stages": {
2026-06-21T09:42:01.5222377Z         "doc": {
2026-06-21T09:42:01.5222549Z           "complete": false,
2026-06-21T09:42:01.5222725Z           "evidence": []
2026-06-21T09:42:01.5222873Z         },
2026-06-21T09:42:01.5223035Z         "impl": {
2026-06-21T09:42:01.5223198Z           "complete": false,
2026-06-21T09:42:01.5223359Z           "evidence": []
2026-06-21T09:42:01.5223505Z         },
2026-06-21T09:42:01.5223665Z         "int": {
2026-06-21T09:42:01.5223835Z           "complete": false,
2026-06-21T09:42:01.5223988Z           "evidence": []
2026-06-21T09:42:01.5224144Z         },
2026-06-21T09:42:01.5224298Z         "unit": {
2026-06-21T09:42:01.5224469Z           "complete": false,
2026-06-21T09:42:01.5224637Z           "evidence": []
2026-06-21T09:42:01.5224784Z         }
2026-06-21T09:42:01.5224932Z       }
2026-06-21T09:42:01.5225075Z     },
2026-06-21T09:42:01.5225224Z     {
2026-06-21T09:42:01.5225414Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-21T09:42:01.5227724Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-21T09:42:01.5227909Z       "requiredStages": [
2026-06-21T09:42:01.5228058Z         "impl",
2026-06-21T09:42:01.5228209Z         "unit",
2026-06-21T09:42:01.5228358Z         "int"
2026-06-21T09:42:01.5228509Z       ],
2026-06-21T09:42:01.5228656Z       "stages": {
2026-06-21T09:42:01.5228807Z         "doc": {
2026-06-21T09:42:01.5229050Z           "complete": false,
2026-06-21T09:42:01.5229202Z           "evidence": []
2026-06-21T09:42:01.5229356Z         },
2026-06-21T09:42:01.5229507Z         "impl": {
2026-06-21T09:42:01.5229680Z           "complete": true,
2026-06-21T09:42:01.5229841Z           "evidence": [
2026-06-21T09:42:01.5230004Z             {
2026-06-21T09:42:01.5230223Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5230376Z               "line": 538
2026-06-21T09:42:01.5230523Z             },
2026-06-21T09:42:01.5230672Z             {
2026-06-21T09:42:01.5230881Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.5231039Z               "line": 625
2026-06-21T09:42:01.5231185Z             },
2026-06-21T09:42:01.5231337Z             {
2026-06-21T09:42:01.5231583Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T09:42:01.5231750Z               "line": 21
2026-06-21T09:42:01.5231898Z             }
2026-06-21T09:42:01.5232060Z           ]
2026-06-21T09:42:01.5232199Z         },
2026-06-21T09:42:01.5232356Z         "int": {
2026-06-21T09:42:01.5232523Z           "complete": true,
2026-06-21T09:42:01.5232680Z           "evidence": [
2026-06-21T09:42:01.5232838Z             {
2026-06-21T09:42:01.5233080Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T09:42:01.5237243Z               "line": 236
2026-06-21T09:42:01.5237572Z             },
2026-06-21T09:42:01.5237725Z             {
2026-06-21T09:42:01.5237998Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T09:42:01.5238164Z               "line": 396
2026-06-21T09:42:01.5238313Z             },
2026-06-21T09:42:01.5238464Z             {
2026-06-21T09:42:01.5238721Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:42:01.5238890Z               "line": 1496
2026-06-21T09:42:01.5239117Z             },
2026-06-21T09:42:01.5239274Z             {
2026-06-21T09:42:01.5239534Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:42:01.5239706Z               "line": 1648
2026-06-21T09:42:01.5239853Z             }
2026-06-21T09:42:01.5240006Z           ]
2026-06-21T09:42:01.5240163Z         },
2026-06-21T09:42:01.5240307Z         "unit": {
2026-06-21T09:42:01.5240483Z           "complete": true,
2026-06-21T09:42:01.5240640Z           "evidence": [
2026-06-21T09:42:01.5240802Z             {
2026-06-21T09:42:01.5241016Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5241185Z               "line": 887
2026-06-21T09:42:01.5241340Z             }
2026-06-21T09:42:01.5241490Z           ]
2026-06-21T09:42:01.5241646Z         }
2026-06-21T09:42:01.5241793Z       }
2026-06-21T09:42:01.5241939Z     },
2026-06-21T09:42:01.5242086Z     {
2026-06-21T09:42:01.5242291Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-21T09:42:01.5242549Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-21T09:42:01.5242711Z       "requiredStages": [
2026-06-21T09:42:01.5242868Z         "impl",
2026-06-21T09:42:01.5243010Z         "unit"
2026-06-21T09:42:01.5243164Z       ],
2026-06-21T09:42:01.5243321Z       "stages": {
2026-06-21T09:42:01.5243479Z         "doc": {
2026-06-21T09:42:01.5243650Z           "complete": false,
2026-06-21T09:42:01.5243822Z           "evidence": []
2026-06-21T09:42:01.5243969Z         },
2026-06-21T09:42:01.5244123Z         "impl": {
2026-06-21T09:42:01.5244294Z           "complete": true,
2026-06-21T09:42:01.5244447Z           "evidence": [
2026-06-21T09:42:01.5244598Z             {
2026-06-21T09:42:01.5244800Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:42:01.5244955Z               "line": 25
2026-06-21T09:42:01.5245113Z             },
2026-06-21T09:42:01.5245260Z             {
2026-06-21T09:42:01.5245462Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:42:01.5245614Z               "line": 26
2026-06-21T09:42:01.5245761Z             },
2026-06-21T09:42:01.5245919Z             {
2026-06-21T09:42:01.5246114Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:42:01.5246273Z               "line": 159
2026-06-21T09:42:01.5246423Z             }
2026-06-21T09:42:01.5246582Z           ]
2026-06-21T09:42:01.5246734Z         },
2026-06-21T09:42:01.5246895Z         "int": {
2026-06-21T09:42:01.5247065Z           "complete": false,
2026-06-21T09:42:01.5247217Z           "evidence": []
2026-06-21T09:42:01.5247366Z         },
2026-06-21T09:42:01.5247517Z         "unit": {
2026-06-21T09:42:01.5247690Z           "complete": true,
2026-06-21T09:42:01.5247841Z           "evidence": [
2026-06-21T09:42:01.5247990Z             {
2026-06-21T09:42:01.5248190Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:42:01.5248338Z               "line": 188
2026-06-21T09:42:01.5248490Z             },
2026-06-21T09:42:01.5248638Z             {
2026-06-21T09:42:01.5248834Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:42:01.5249067Z               "line": 240
2026-06-21T09:42:01.5249226Z             },
2026-06-21T09:42:01.5249382Z             {
2026-06-21T09:42:01.5249573Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:42:01.5249733Z               "line": 186
2026-06-21T09:42:01.5249881Z             }
2026-06-21T09:42:01.5250132Z           ]
2026-06-21T09:42:01.5250284Z         }
2026-06-21T09:42:01.5250437Z       }
2026-06-21T09:42:01.5250595Z     },
2026-06-21T09:42:01.5250829Z     {
2026-06-21T09:42:01.5251018Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-21T09:42:01.5251305Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-21T09:42:01.5251477Z       "requiredStages": [
2026-06-21T09:42:01.5251634Z         "impl",
2026-06-21T09:42:01.5251792Z         "unit"
2026-06-21T09:42:01.5251939Z       ],
2026-06-21T09:42:01.5252097Z       "stages": {
2026-06-21T09:42:01.5252252Z         "doc": {
2026-06-21T09:42:01.5252424Z           "complete": false,
2026-06-21T09:42:01.5252579Z           "evidence": []
2026-06-21T09:42:01.5252732Z         },
2026-06-21T09:42:01.5252894Z         "impl": {
2026-06-21T09:42:01.5253052Z           "complete": true,
2026-06-21T09:42:01.5253214Z           "evidence": [
2026-06-21T09:42:01.5253367Z             {
2026-06-21T09:42:01.5253566Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:42:01.5253734Z               "line": 48
2026-06-21T09:42:01.5253881Z             },
2026-06-21T09:42:01.5254034Z             {
2026-06-21T09:42:01.5254229Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:42:01.5254377Z               "line": 55
2026-06-21T09:42:01.5254529Z             },
2026-06-21T09:42:01.5254678Z             {
2026-06-21T09:42:01.5254893Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:42:01.5255049Z               "line": 74
2026-06-21T09:42:01.5255210Z             },
2026-06-21T09:42:01.5255364Z             {
2026-06-21T09:42:01.5255554Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:42:01.5255721Z               "line": 91
2026-06-21T09:42:01.5255869Z             }
2026-06-21T09:42:01.5256022Z           ]
2026-06-21T09:42:01.5256164Z         },
2026-06-21T09:42:01.5256326Z         "int": {
2026-06-21T09:42:01.5256498Z           "complete": false,
2026-06-21T09:42:01.5256660Z           "evidence": []
2026-06-21T09:42:01.5256818Z         },
2026-06-21T09:42:01.5256975Z         "unit": {
2026-06-21T09:42:01.5257147Z           "complete": true,
2026-06-21T09:42:01.5257299Z           "evidence": [
2026-06-21T09:42:01.5257455Z             {
2026-06-21T09:42:01.5257649Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:42:01.5257797Z               "line": 149
2026-06-21T09:42:01.5257954Z             },
2026-06-21T09:42:01.5258106Z             {
2026-06-21T09:42:01.5258302Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:42:01.5258460Z               "line": 166
2026-06-21T09:42:01.5258621Z             },
2026-06-21T09:42:01.5258779Z             {
2026-06-21T09:42:01.5259050Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:42:01.5259207Z               "line": 176
2026-06-21T09:42:01.5259365Z             },
2026-06-21T09:42:01.5259522Z             {
2026-06-21T09:42:01.5259714Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:42:01.5259879Z               "line": 194
2026-06-21T09:42:01.5260029Z             },
2026-06-21T09:42:01.5260184Z             {
2026-06-21T09:42:01.5260375Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:42:01.5260530Z               "line": 207
2026-06-21T09:42:01.5260678Z             }
2026-06-21T09:42:01.5260831Z           ]
2026-06-21T09:42:01.5260983Z         }
2026-06-21T09:42:01.5261136Z       }
2026-06-21T09:42:01.5261283Z     },
2026-06-21T09:42:01.5261441Z     {
2026-06-21T09:42:01.5261637Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-21T09:42:01.5261951Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-21T09:42:01.5262113Z       "requiredStages": [
2026-06-21T09:42:01.5262257Z         "impl",
2026-06-21T09:42:01.5262413Z         "unit"
2026-06-21T09:42:01.5262562Z       ],
2026-06-21T09:42:01.5262714Z       "stages": {
2026-06-21T09:42:01.5262870Z         "doc": {
2026-06-21T09:42:01.5263040Z           "complete": false,
2026-06-21T09:42:01.5263302Z           "evidence": []
2026-06-21T09:42:01.5263454Z         },
2026-06-21T09:42:01.5263717Z         "impl": {
2026-06-21T09:42:01.5263884Z           "complete": true,
2026-06-21T09:42:01.5264036Z           "evidence": [
2026-06-21T09:42:01.5264184Z             {
2026-06-21T09:42:01.5264398Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.5264548Z               "line": 466
2026-06-21T09:42:01.5264704Z             },
2026-06-21T09:42:01.5264862Z             {
2026-06-21T09:42:01.5265061Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:42:01.5265220Z               "line": 26
2026-06-21T09:42:01.5265371Z             }
2026-06-21T09:42:01.5265530Z           ]
2026-06-21T09:42:01.5265675Z         },
2026-06-21T09:42:01.5265838Z         "int": {
2026-06-21T09:42:01.5266018Z           "complete": false,
2026-06-21T09:42:01.5266177Z           "evidence": []
2026-06-21T09:42:01.5266329Z         },
2026-06-21T09:42:01.5266482Z         "unit": {
2026-06-21T09:42:01.5266653Z           "complete": true,
2026-06-21T09:42:01.5266811Z           "evidence": [
2026-06-21T09:42:01.5266972Z             {
2026-06-21T09:42:01.5267178Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:42:01.5267339Z               "line": 150
2026-06-21T09:42:01.5267493Z             },
2026-06-21T09:42:01.5267649Z             {
2026-06-21T09:42:01.5267845Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:42:01.5268001Z               "line": 208
2026-06-21T09:42:01.5268158Z             }
2026-06-21T09:42:01.5268309Z           ]
2026-06-21T09:42:01.5268457Z         }
2026-06-21T09:42:01.5268604Z       }
2026-06-21T09:42:01.5268758Z     },
2026-06-21T09:42:01.5268904Z     {
2026-06-21T09:42:01.5269177Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-21T09:42:01.5282747Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T09:42:01.5283177Z       "requiredStages": [
2026-06-21T09:42:01.5283338Z         "impl",
2026-06-21T09:42:01.5283487Z         "unit",
2026-06-21T09:42:01.5283643Z         "int"
2026-06-21T09:42:01.5283802Z       ],
2026-06-21T09:42:01.5283948Z       "stages": {
2026-06-21T09:42:01.5284100Z         "doc": {
2026-06-21T09:42:01.5284269Z           "complete": false,
2026-06-21T09:42:01.5284427Z           "evidence": []
2026-06-21T09:42:01.5284584Z         },
2026-06-21T09:42:01.5284728Z         "impl": {
2026-06-21T09:42:01.5284884Z           "complete": true,
2026-06-21T09:42:01.5285048Z           "evidence": [
2026-06-21T09:42:01.5285194Z             {
2026-06-21T09:42:01.5285409Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:42:01.5285562Z               "line": 99
2026-06-21T09:42:01.5285715Z             },
2026-06-21T09:42:01.5285862Z             {
2026-06-21T09:42:01.5286062Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:42:01.5286229Z               "line": 201
2026-06-21T09:42:01.5286377Z             }
2026-06-21T09:42:01.5286535Z           ]
2026-06-21T09:42:01.5286678Z         },
2026-06-21T09:42:01.5286829Z         "int": {
2026-06-21T09:42:01.5286997Z           "complete": true,
2026-06-21T09:42:01.5287153Z           "evidence": [
2026-06-21T09:42:01.5287302Z             {
2026-06-21T09:42:01.5287549Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:42:01.5287716Z               "line": 737
2026-06-21T09:42:01.5287864Z             }
2026-06-21T09:42:01.5288016Z           ]
2026-06-21T09:42:01.5288222Z         },
2026-06-21T09:42:01.5288364Z         "unit": {
2026-06-21T09:42:01.5288523Z           "complete": true,
2026-06-21T09:42:01.5288684Z           "evidence": [
2026-06-21T09:42:01.5288832Z             {
2026-06-21T09:42:01.5289098Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:42:01.5289264Z               "line": 517
2026-06-21T09:42:01.5289424Z             },
2026-06-21T09:42:01.5289573Z             {
2026-06-21T09:42:01.5289772Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:42:01.5289921Z               "line": 576
2026-06-21T09:42:01.5290077Z             }
2026-06-21T09:42:01.5290231Z           ]
2026-06-21T09:42:01.5290377Z         }
2026-06-21T09:42:01.5290526Z       }
2026-06-21T09:42:01.5290669Z     },
2026-06-21T09:42:01.5290827Z     {
2026-06-21T09:42:01.5291026Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-21T09:42:01.5292964Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-21T09:42:01.5293141Z       "requiredStages": [
2026-06-21T09:42:01.5293293Z         "doc",
2026-06-21T09:42:01.5293459Z         "impl",
2026-06-21T09:42:01.5293723Z         "unit"
2026-06-21T09:42:01.5293884Z       ],
2026-06-21T09:42:01.5294052Z       "stages": {
2026-06-21T09:42:01.5294291Z         "doc": {
2026-06-21T09:42:01.5294460Z           "complete": true,
2026-06-21T09:42:01.5294617Z           "evidence": [
2026-06-21T09:42:01.5294772Z             {
2026-06-21T09:42:01.5294958Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.5295115Z               "line": 214
2026-06-21T09:42:01.5295269Z             }
2026-06-21T09:42:01.5295416Z           ]
2026-06-21T09:42:01.5295574Z         },
2026-06-21T09:42:01.5295731Z         "impl": {
2026-06-21T09:42:01.5295903Z           "complete": true,
2026-06-21T09:42:01.5296065Z           "evidence": [
2026-06-21T09:42:01.5296223Z             {
2026-06-21T09:42:01.5296427Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.5296576Z               "line": 56
2026-06-21T09:42:01.5296727Z             },
2026-06-21T09:42:01.5296867Z             {
2026-06-21T09:42:01.5297071Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.5297225Z               "line": 580
2026-06-21T09:42:01.5297385Z             },
2026-06-21T09:42:01.5297542Z             {
2026-06-21T09:42:01.5297741Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.5297895Z               "line": 36
2026-06-21T09:42:01.5298052Z             },
2026-06-21T09:42:01.5298205Z             {
2026-06-21T09:42:01.5298415Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.5298581Z               "line": 59
2026-06-21T09:42:01.5298734Z             },
2026-06-21T09:42:01.5298881Z             {
2026-06-21T09:42:01.5299187Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.5299339Z               "line": 83
2026-06-21T09:42:01.5299502Z             },
2026-06-21T09:42:01.5299648Z             {
2026-06-21T09:42:01.5299861Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.5300027Z               "line": 140
2026-06-21T09:42:01.5300176Z             },
2026-06-21T09:42:01.5300333Z             {
2026-06-21T09:42:01.5300533Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.5300691Z               "line": 159
2026-06-21T09:42:01.5300833Z             },
2026-06-21T09:42:01.5300986Z             {
2026-06-21T09:42:01.5301196Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.5301354Z               "line": 384
2026-06-21T09:42:01.5301501Z             },
2026-06-21T09:42:01.5301650Z             {
2026-06-21T09:42:01.5301858Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.5302007Z               "line": 535
2026-06-21T09:42:01.5302169Z             },
2026-06-21T09:42:01.5302322Z             {
2026-06-21T09:42:01.5302515Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.5302677Z               "line": 581
2026-06-21T09:42:01.5302832Z             },
2026-06-21T09:42:01.5302986Z             {
2026-06-21T09:42:01.5303180Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5303334Z               "line": 300
2026-06-21T09:42:01.5303490Z             },
2026-06-21T09:42:01.5303644Z             {
2026-06-21T09:42:01.5303829Z               "path": "crates/spt/src/main.rs",
2026-06-21T09:42:01.5303982Z               "line": 42
2026-06-21T09:42:01.5304129Z             }
2026-06-21T09:42:01.5304278Z           ]
2026-06-21T09:42:01.5304434Z         },
2026-06-21T09:42:01.5304593Z         "int": {
2026-06-21T09:42:01.5304759Z           "complete": false,
2026-06-21T09:42:01.5304922Z           "evidence": []
2026-06-21T09:42:01.5305073Z         },
2026-06-21T09:42:01.5305225Z         "unit": {
2026-06-21T09:42:01.5305389Z           "complete": true,
2026-06-21T09:42:01.5305543Z           "evidence": [
2026-06-21T09:42:01.5305690Z             {
2026-06-21T09:42:01.5305891Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.5306057Z               "line": 813
2026-06-21T09:42:01.5306319Z             },
2026-06-21T09:42:01.5306478Z             {
2026-06-21T09:42:01.5306682Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.5306949Z               "line": 854
2026-06-21T09:42:01.5307112Z             },
2026-06-21T09:42:01.5307259Z             {
2026-06-21T09:42:01.5307470Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.5307626Z               "line": 928
2026-06-21T09:42:01.5307775Z             }
2026-06-21T09:42:01.5307940Z           ]
2026-06-21T09:42:01.5308088Z         }
2026-06-21T09:42:01.5308259Z       }
2026-06-21T09:42:01.5308398Z     },
2026-06-21T09:42:01.5308550Z     {
2026-06-21T09:42:01.5308765Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-21T09:42:01.5316245Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-21T09:42:01.5316451Z       "requiredStages": [
2026-06-21T09:42:01.5316607Z         "impl",
2026-06-21T09:42:01.5316761Z         "unit",
2026-06-21T09:42:01.5316912Z         "int"
2026-06-21T09:42:01.5317071Z       ],
2026-06-21T09:42:01.5317218Z       "stages": {
2026-06-21T09:42:01.5317372Z         "doc": {
2026-06-21T09:42:01.5317528Z           "complete": false,
2026-06-21T09:42:01.5317686Z           "evidence": []
2026-06-21T09:42:01.5317834Z         },
2026-06-21T09:42:01.5317978Z         "impl": {
2026-06-21T09:42:01.5318143Z           "complete": true,
2026-06-21T09:42:01.5318297Z           "evidence": [
2026-06-21T09:42:01.5318452Z             {
2026-06-21T09:42:01.5318658Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:42:01.5318824Z               "line": 106
2026-06-21T09:42:01.5319039Z             }
2026-06-21T09:42:01.5319196Z           ]
2026-06-21T09:42:01.5319344Z         },
2026-06-21T09:42:01.5319491Z         "int": {
2026-06-21T09:42:01.5319659Z           "complete": true,
2026-06-21T09:42:01.5319816Z           "evidence": [
2026-06-21T09:42:01.5319969Z             {
2026-06-21T09:42:01.5320194Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T09:42:01.5320354Z               "line": 296
2026-06-21T09:42:01.5320508Z             }
2026-06-21T09:42:01.5320659Z           ]
2026-06-21T09:42:01.5320811Z         },
2026-06-21T09:42:01.5320963Z         "unit": {
2026-06-21T09:42:01.5321128Z           "complete": true,
2026-06-21T09:42:01.5321287Z           "evidence": [
2026-06-21T09:42:01.5321549Z             {
2026-06-21T09:42:01.5321767Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.5322020Z               "line": 464
2026-06-21T09:42:01.5322174Z             }
2026-06-21T09:42:01.5322320Z           ]
2026-06-21T09:42:01.5322484Z         }
2026-06-21T09:42:01.5322630Z       }
2026-06-21T09:42:01.5322784Z     },
2026-06-21T09:42:01.5322936Z     {
2026-06-21T09:42:01.5323104Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-21T09:42:01.5328098Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-21T09:42:01.5328284Z       "requiredStages": [
2026-06-21T09:42:01.5328436Z         "impl",
2026-06-21T09:42:01.5328590Z         "unit",
2026-06-21T09:42:01.5328747Z         "int"
2026-06-21T09:42:01.5328895Z       ],
2026-06-21T09:42:01.5329131Z       "stages": {
2026-06-21T09:42:01.5329285Z         "doc": {
2026-06-21T09:42:01.5329451Z           "complete": false,
2026-06-21T09:42:01.5329619Z           "evidence": []
2026-06-21T09:42:01.5329770Z         },
2026-06-21T09:42:01.5329985Z         "impl": {
2026-06-21T09:42:01.5330148Z           "complete": true,
2026-06-21T09:42:01.5330324Z           "evidence": [
2026-06-21T09:42:01.5330510Z             {
2026-06-21T09:42:01.5330734Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.5330896Z               "line": 123
2026-06-21T09:42:01.5331053Z             },
2026-06-21T09:42:01.5331196Z             {
2026-06-21T09:42:01.5331391Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T09:42:01.5331551Z               "line": 134
2026-06-21T09:42:01.5331698Z             }
2026-06-21T09:42:01.5331866Z           ]
2026-06-21T09:42:01.5332013Z         },
2026-06-21T09:42:01.5332161Z         "int": {
2026-06-21T09:42:01.5332322Z           "complete": true,
2026-06-21T09:42:01.5332485Z           "evidence": [
2026-06-21T09:42:01.5332642Z             {
2026-06-21T09:42:01.5332843Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:42:01.5333006Z               "line": 312
2026-06-21T09:42:01.5333153Z             },
2026-06-21T09:42:01.5333306Z             {
2026-06-21T09:42:01.5333506Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:42:01.5333669Z               "line": 525
2026-06-21T09:42:01.5333820Z             }
2026-06-21T09:42:01.5333974Z           ]
2026-06-21T09:42:01.5334129Z         },
2026-06-21T09:42:01.5334282Z         "unit": {
2026-06-21T09:42:01.5334446Z           "complete": true,
2026-06-21T09:42:01.5334603Z           "evidence": [
2026-06-21T09:42:01.5334747Z             {
2026-06-21T09:42:01.5334972Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.5335132Z               "line": 250
2026-06-21T09:42:01.5335282Z             }
2026-06-21T09:42:01.5335428Z           ]
2026-06-21T09:42:01.5335582Z         }
2026-06-21T09:42:01.5335734Z       }
2026-06-21T09:42:01.5335882Z     },
2026-06-21T09:42:01.5336148Z     {
2026-06-21T09:42:01.5336348Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-21T09:42:01.5339035Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-21T09:42:01.5339312Z       "requiredStages": [
2026-06-21T09:42:01.5339460Z         "impl",
2026-06-21T09:42:01.5339610Z         "unit"
2026-06-21T09:42:01.5339759Z       ],
2026-06-21T09:42:01.5339916Z       "stages": {
2026-06-21T09:42:01.5340112Z         "doc": {
2026-06-21T09:42:01.5340282Z           "complete": false,
2026-06-21T09:42:01.5340446Z           "evidence": []
2026-06-21T09:42:01.5340602Z         },
2026-06-21T09:42:01.5340751Z         "impl": {
2026-06-21T09:42:01.5340912Z           "complete": true,
2026-06-21T09:42:01.5341075Z           "evidence": [
2026-06-21T09:42:01.5341232Z             {
2026-06-21T09:42:01.5341442Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:42:01.5341599Z               "line": 31
2026-06-21T09:42:01.5341748Z             }
2026-06-21T09:42:01.5341894Z           ]
2026-06-21T09:42:01.5342046Z         },
2026-06-21T09:42:01.5342196Z         "int": {
2026-06-21T09:42:01.5342355Z           "complete": false,
2026-06-21T09:42:01.5342511Z           "evidence": []
2026-06-21T09:42:01.5342670Z         },
2026-06-21T09:42:01.5342820Z         "unit": {
2026-06-21T09:42:01.5342989Z           "complete": true,
2026-06-21T09:42:01.5343145Z           "evidence": [
2026-06-21T09:42:01.5343313Z             {
2026-06-21T09:42:01.5343527Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:42:01.5343679Z               "line": 181
2026-06-21T09:42:01.5343837Z             }
2026-06-21T09:42:01.5343990Z           ]
2026-06-21T09:42:01.5344147Z         }
2026-06-21T09:42:01.5344300Z       }
2026-06-21T09:42:01.5344447Z     },
2026-06-21T09:42:01.5344606Z     {
2026-06-21T09:42:01.5344793Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-21T09:42:01.5345063Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-21T09:42:01.5345227Z       "requiredStages": [
2026-06-21T09:42:01.5345378Z         "impl",
2026-06-21T09:42:01.5345532Z         "unit"
2026-06-21T09:42:01.5345678Z       ],
2026-06-21T09:42:01.5345847Z       "stages": {
2026-06-21T09:42:01.5345993Z         "doc": {
2026-06-21T09:42:01.5346166Z           "complete": false,
2026-06-21T09:42:01.5346327Z           "evidence": []
2026-06-21T09:42:01.5346481Z         },
2026-06-21T09:42:01.5346632Z         "impl": {
2026-06-21T09:42:01.5346805Z           "complete": true,
2026-06-21T09:42:01.5346971Z           "evidence": [
2026-06-21T09:42:01.5347130Z             {
2026-06-21T09:42:01.5347341Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:42:01.5347494Z               "line": 49
2026-06-21T09:42:01.5347649Z             },
2026-06-21T09:42:01.5347793Z             {
2026-06-21T09:42:01.5347997Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:42:01.5348155Z               "line": 81
2026-06-21T09:42:01.5348302Z             }
2026-06-21T09:42:01.5348451Z           ]
2026-06-21T09:42:01.5348588Z         },
2026-06-21T09:42:01.5348747Z         "int": {
2026-06-21T09:42:01.5348913Z           "complete": false,
2026-06-21T09:42:01.5349170Z           "evidence": []
2026-06-21T09:42:01.5349319Z         },
2026-06-21T09:42:01.5349475Z         "unit": {
2026-06-21T09:42:01.5349634Z           "complete": true,
2026-06-21T09:42:01.5349795Z           "evidence": [
2026-06-21T09:42:01.5349939Z             {
2026-06-21T09:42:01.5350261Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:42:01.5350424Z               "line": 156
2026-06-21T09:42:01.5350658Z             },
2026-06-21T09:42:01.5350810Z             {
2026-06-21T09:42:01.5351015Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:42:01.5351162Z               "line": 173
2026-06-21T09:42:01.5351320Z             },
2026-06-21T09:42:01.5351472Z             {
2026-06-21T09:42:01.5351673Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:42:01.5351845Z               "line": 196
2026-06-21T09:42:01.5351997Z             }
2026-06-21T09:42:01.5352145Z           ]
2026-06-21T09:42:01.5352293Z         }
2026-06-21T09:42:01.5352449Z       }
2026-06-21T09:42:01.5352597Z     },
2026-06-21T09:42:01.5352752Z     {
2026-06-21T09:42:01.5352963Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-21T09:42:01.5353253Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-21T09:42:01.5353428Z       "requiredStages": [
2026-06-21T09:42:01.5353582Z         "impl",
2026-06-21T09:42:01.5353738Z         "unit"
2026-06-21T09:42:01.5353892Z       ],
2026-06-21T09:42:01.5354043Z       "stages": {
2026-06-21T09:42:01.5354197Z         "doc": {
2026-06-21T09:42:01.5354358Z           "complete": false,
2026-06-21T09:42:01.5354522Z           "evidence": []
2026-06-21T09:42:01.5354673Z         },
2026-06-21T09:42:01.5354832Z         "impl": {
2026-06-21T09:42:01.5354988Z           "complete": true,
2026-06-21T09:42:01.5355156Z           "evidence": [
2026-06-21T09:42:01.5355311Z             {
2026-06-21T09:42:01.5355511Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:42:01.5355676Z               "line": 120
2026-06-21T09:42:01.5355829Z             }
2026-06-21T09:42:01.5355981Z           ]
2026-06-21T09:42:01.5356134Z         },
2026-06-21T09:42:01.5356291Z         "int": {
2026-06-21T09:42:01.5356459Z           "complete": false,
2026-06-21T09:42:01.5356615Z           "evidence": []
2026-06-21T09:42:01.5356778Z         },
2026-06-21T09:42:01.5356930Z         "unit": {
2026-06-21T09:42:01.5357102Z           "complete": true,
2026-06-21T09:42:01.5357255Z           "evidence": [
2026-06-21T09:42:01.5357413Z             {
2026-06-21T09:42:01.5357623Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:42:01.5357774Z               "line": 212
2026-06-21T09:42:01.5357930Z             },
2026-06-21T09:42:01.5358077Z             {
2026-06-21T09:42:01.5358286Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:42:01.5358439Z               "line": 221
2026-06-21T09:42:01.5358601Z             },
2026-06-21T09:42:01.5358758Z             {
2026-06-21T09:42:01.5359030Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:42:01.5359191Z               "line": 229
2026-06-21T09:42:01.5359344Z             },
2026-06-21T09:42:01.5359502Z             {
2026-06-21T09:42:01.5359707Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:42:01.5359870Z               "line": 239
2026-06-21T09:42:01.5360030Z             },
2026-06-21T09:42:01.5360185Z             {
2026-06-21T09:42:01.5360389Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:42:01.5360547Z               "line": 249
2026-06-21T09:42:01.5360702Z             }
2026-06-21T09:42:01.5360845Z           ]
2026-06-21T09:42:01.5361007Z         }
2026-06-21T09:42:01.5361160Z       }
2026-06-21T09:42:01.5361308Z     },
2026-06-21T09:42:01.5361466Z     {
2026-06-21T09:42:01.5361651Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-21T09:42:01.5361942Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-21T09:42:01.5362109Z       "requiredStages": [
2026-06-21T09:42:01.5362266Z         "impl",
2026-06-21T09:42:01.5362420Z         "unit"
2026-06-21T09:42:01.5362571Z       ],
2026-06-21T09:42:01.5362724Z       "stages": {
2026-06-21T09:42:01.5362876Z         "doc": {
2026-06-21T09:42:01.5363047Z           "complete": false,
2026-06-21T09:42:01.5363312Z           "evidence": []
2026-06-21T09:42:01.5363465Z         },
2026-06-21T09:42:01.5363626Z         "impl": {
2026-06-21T09:42:01.5363879Z           "complete": true,
2026-06-21T09:42:01.5364047Z           "evidence": [
2026-06-21T09:42:01.5364194Z             {
2026-06-21T09:42:01.5364391Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:42:01.5364542Z               "line": 14
2026-06-21T09:42:01.5364701Z             },
2026-06-21T09:42:01.5364852Z             {
2026-06-21T09:42:01.5365044Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:42:01.5365191Z               "line": 63
2026-06-21T09:42:01.5365340Z             }
2026-06-21T09:42:01.5365495Z           ]
2026-06-21T09:42:01.5365645Z         },
2026-06-21T09:42:01.5365801Z         "int": {
2026-06-21T09:42:01.5365967Z           "complete": false,
2026-06-21T09:42:01.5366122Z           "evidence": []
2026-06-21T09:42:01.5366279Z         },
2026-06-21T09:42:01.5366418Z         "unit": {
2026-06-21T09:42:01.5366594Z           "complete": true,
2026-06-21T09:42:01.5366747Z           "evidence": [
2026-06-21T09:42:01.5366904Z             {
2026-06-21T09:42:01.5367104Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:42:01.5367258Z               "line": 164
2026-06-21T09:42:01.5367415Z             },
2026-06-21T09:42:01.5367568Z             {
2026-06-21T09:42:01.5367753Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:42:01.5367906Z               "line": 198
2026-06-21T09:42:01.5368057Z             },
2026-06-21T09:42:01.5368207Z             {
2026-06-21T09:42:01.5368395Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:42:01.5368557Z               "line": 220
2026-06-21T09:42:01.5368698Z             }
2026-06-21T09:42:01.5368856Z           ]
2026-06-21T09:42:01.5369060Z         }
2026-06-21T09:42:01.5369214Z       }
2026-06-21T09:42:01.5369370Z     },
2026-06-21T09:42:01.5369519Z     {
2026-06-21T09:42:01.5369694Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-21T09:42:01.5371672Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-21T09:42:01.5371840Z       "requiredStages": [],
2026-06-21T09:42:01.5371996Z       "stages": {
2026-06-21T09:42:01.5372140Z         "doc": {
2026-06-21T09:42:01.5372302Z           "complete": true,
2026-06-21T09:42:01.5372455Z           "evidence": [
2026-06-21T09:42:01.5372607Z             {
2026-06-21T09:42:01.5372798Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.5372950Z               "line": 165
2026-06-21T09:42:01.5373103Z             }
2026-06-21T09:42:01.5373241Z           ]
2026-06-21T09:42:01.5373395Z         },
2026-06-21T09:42:01.5373559Z         "impl": {
2026-06-21T09:42:01.5373726Z           "complete": false,
2026-06-21T09:42:01.5373886Z           "evidence": []
2026-06-21T09:42:01.5374030Z         },
2026-06-21T09:42:01.5374187Z         "int": {
2026-06-21T09:42:01.5374340Z           "complete": false,
2026-06-21T09:42:01.5374506Z           "evidence": []
2026-06-21T09:42:01.5374659Z         },
2026-06-21T09:42:01.5374811Z         "unit": {
2026-06-21T09:42:01.5374974Z           "complete": false,
2026-06-21T09:42:01.5375135Z           "evidence": []
2026-06-21T09:42:01.5375294Z         }
2026-06-21T09:42:01.5375436Z       }
2026-06-21T09:42:01.5375590Z     },
2026-06-21T09:42:01.5375736Z     {
2026-06-21T09:42:01.5375942Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-21T09:42:01.5376290Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-21T09:42:01.5376455Z       "requiredStages": [
2026-06-21T09:42:01.5376612Z         "impl",
2026-06-21T09:42:01.5376887Z         "unit"
2026-06-21T09:42:01.5377044Z       ],
2026-06-21T09:42:01.5377198Z       "stages": {
2026-06-21T09:42:01.5377440Z         "doc": {
2026-06-21T09:42:01.5377612Z           "complete": false,
2026-06-21T09:42:01.5377770Z           "evidence": []
2026-06-21T09:42:01.5381052Z         },
2026-06-21T09:42:01.5381256Z         "impl": {
2026-06-21T09:42:01.5381428Z           "complete": true,
2026-06-21T09:42:01.5381586Z           "evidence": [
2026-06-21T09:42:01.5381739Z             {
2026-06-21T09:42:01.5381956Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:42:01.5382123Z               "line": 76
2026-06-21T09:42:01.5382271Z             },
2026-06-21T09:42:01.5382420Z             {
2026-06-21T09:42:01.5382629Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:42:01.5382786Z               "line": 167
2026-06-21T09:42:01.5382944Z             },
2026-06-21T09:42:01.5383087Z             {
2026-06-21T09:42:01.5383283Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:42:01.5383458Z               "line": 233
2026-06-21T09:42:01.5383602Z             },
2026-06-21T09:42:01.5383758Z             {
2026-06-21T09:42:01.5383951Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:42:01.5384120Z               "line": 272
2026-06-21T09:42:01.5384282Z             }
2026-06-21T09:42:01.5384428Z           ]
2026-06-21T09:42:01.5384581Z         },
2026-06-21T09:42:01.5384723Z         "int": {
2026-06-21T09:42:01.5384896Z           "complete": false,
2026-06-21T09:42:01.5385057Z           "evidence": []
2026-06-21T09:42:01.5385215Z         },
2026-06-21T09:42:01.5385376Z         "unit": {
2026-06-21T09:42:01.5385535Z           "complete": true,
2026-06-21T09:42:01.5385695Z           "evidence": [
2026-06-21T09:42:01.5385845Z             {
2026-06-21T09:42:01.5386044Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:42:01.5386197Z               "line": 321
2026-06-21T09:42:01.5386349Z             },
2026-06-21T09:42:01.5386507Z             {
2026-06-21T09:42:01.5386702Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:42:01.5386864Z               "line": 329
2026-06-21T09:42:01.5387010Z             },
2026-06-21T09:42:01.5387172Z             {
2026-06-21T09:42:01.5387366Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:42:01.5387524Z               "line": 356
2026-06-21T09:42:01.5387676Z             },
2026-06-21T09:42:01.5387820Z             {
2026-06-21T09:42:01.5388024Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:42:01.5388182Z               "line": 395
2026-06-21T09:42:01.5388325Z             },
2026-06-21T09:42:01.5388487Z             {
2026-06-21T09:42:01.5388683Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:42:01.5388853Z               "line": 406
2026-06-21T09:42:01.5389074Z             },
2026-06-21T09:42:01.5389217Z             {
2026-06-21T09:42:01.5389413Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:42:01.5389577Z               "line": 418
2026-06-21T09:42:01.5389725Z             },
2026-06-21T09:42:01.5389875Z             {
2026-06-21T09:42:01.5390087Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:42:01.5390243Z               "line": 442
2026-06-21T09:42:01.5390396Z             }
2026-06-21T09:42:01.5390538Z           ]
2026-06-21T09:42:01.5390696Z         }
2026-06-21T09:42:01.5390829Z       }
2026-06-21T09:42:01.5390983Z     },
2026-06-21T09:42:01.5391130Z     {
2026-06-21T09:42:01.5391312Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-21T09:42:01.5391575Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-21T09:42:01.5391745Z       "requiredStages": [
2026-06-21T09:42:01.5391903Z         "impl",
2026-06-21T09:42:01.5392049Z         "int"
2026-06-21T09:42:01.5392204Z       ],
2026-06-21T09:42:01.5392364Z       "stages": {
2026-06-21T09:42:01.5392511Z         "doc": {
2026-06-21T09:42:01.5392670Z           "complete": false,
2026-06-21T09:42:01.5392965Z           "evidence": []
2026-06-21T09:42:01.5393126Z         },
2026-06-21T09:42:01.5393274Z         "impl": {
2026-06-21T09:42:01.5393528Z           "complete": true,
2026-06-21T09:42:01.5393684Z           "evidence": [
2026-06-21T09:42:01.5393838Z             {
2026-06-21T09:42:01.5394047Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.5394205Z               "line": 22
2026-06-21T09:42:01.5394356Z             }
2026-06-21T09:42:01.5394501Z           ]
2026-06-21T09:42:01.5394661Z         },
2026-06-21T09:42:01.5394814Z         "int": {
2026-06-21T09:42:01.5394978Z           "complete": true,
2026-06-21T09:42:01.5395136Z           "evidence": [
2026-06-21T09:42:01.5395283Z             {
2026-06-21T09:42:01.5395489Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-21T09:42:01.5395645Z               "line": 18
2026-06-21T09:42:01.5395799Z             }
2026-06-21T09:42:01.5395946Z           ]
2026-06-21T09:42:01.5396095Z         },
2026-06-21T09:42:01.5396251Z         "unit": {
2026-06-21T09:42:01.5396419Z           "complete": false,
2026-06-21T09:42:01.5396585Z           "evidence": []
2026-06-21T09:42:01.5396739Z         }
2026-06-21T09:42:01.5396895Z       }
2026-06-21T09:42:01.5397054Z     },
2026-06-21T09:42:01.5397200Z     {
2026-06-21T09:42:01.5397406Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-21T09:42:01.5397719Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-21T09:42:01.5397888Z       "requiredStages": [
2026-06-21T09:42:01.5398032Z         "impl",
2026-06-21T09:42:01.5398193Z         "unit"
2026-06-21T09:42:01.5398351Z       ],
2026-06-21T09:42:01.5398498Z       "stages": {
2026-06-21T09:42:01.5398652Z         "doc": {
2026-06-21T09:42:01.5398813Z           "complete": false,
2026-06-21T09:42:01.5399042Z           "evidence": []
2026-06-21T09:42:01.5399199Z         },
2026-06-21T09:42:01.5399361Z         "impl": {
2026-06-21T09:42:01.5399524Z           "complete": true,
2026-06-21T09:42:01.5399690Z           "evidence": [
2026-06-21T09:42:01.5399849Z             {
2026-06-21T09:42:01.5400057Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.5400229Z               "line": 465
2026-06-21T09:42:01.5400379Z             },
2026-06-21T09:42:01.5400536Z             {
2026-06-21T09:42:01.5400741Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:42:01.5400918Z               "line": 27
2026-06-21T09:42:01.5401070Z             }
2026-06-21T09:42:01.5401209Z           ]
2026-06-21T09:42:01.5401351Z         },
2026-06-21T09:42:01.5401500Z         "int": {
2026-06-21T09:42:01.5401666Z           "complete": false,
2026-06-21T09:42:01.5401829Z           "evidence": []
2026-06-21T09:42:01.5401981Z         },
2026-06-21T09:42:01.5402140Z         "unit": {
2026-06-21T09:42:01.5402305Z           "complete": true,
2026-06-21T09:42:01.5402469Z           "evidence": [
2026-06-21T09:42:01.5402629Z             {
2026-06-21T09:42:01.5402845Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.5403004Z               "line": 990
2026-06-21T09:42:01.5403159Z             },
2026-06-21T09:42:01.5403319Z             {
2026-06-21T09:42:01.5403520Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:42:01.5403687Z               "line": 181
2026-06-21T09:42:01.5403840Z             }
2026-06-21T09:42:01.5403997Z           ]
2026-06-21T09:42:01.5404140Z         }
2026-06-21T09:42:01.5404282Z       }
2026-06-21T09:42:01.5404441Z     },
2026-06-21T09:42:01.5404583Z     {
2026-06-21T09:42:01.5404789Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-21T09:42:01.5405052Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-21T09:42:01.5405226Z       "requiredStages": [
2026-06-21T09:42:01.5405383Z         "impl",
2026-06-21T09:42:01.5405538Z         "unit"
2026-06-21T09:42:01.5405696Z       ],
2026-06-21T09:42:01.5405852Z       "stages": {
2026-06-21T09:42:01.5406011Z         "doc": {
2026-06-21T09:42:01.5406167Z           "complete": false,
2026-06-21T09:42:01.5406440Z           "evidence": []
2026-06-21T09:42:01.5406598Z         },
2026-06-21T09:42:01.5406839Z         "impl": {
2026-06-21T09:42:01.5407012Z           "complete": true,
2026-06-21T09:42:01.5407169Z           "evidence": [
2026-06-21T09:42:01.5407327Z             {
2026-06-21T09:42:01.5407537Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.5407693Z               "line": 73
2026-06-21T09:42:01.5407852Z             },
2026-06-21T09:42:01.5408004Z             {
2026-06-21T09:42:01.5408246Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.5408410Z               "line": 972
2026-06-21T09:42:01.5408568Z             },
2026-06-21T09:42:01.5408720Z             {
2026-06-21T09:42:01.5408911Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:42:01.5409150Z               "line": 20
2026-06-21T09:42:01.5409303Z             },
2026-06-21T09:42:01.5409459Z             {
2026-06-21T09:42:01.5409707Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:42:01.5409875Z               "line": 100
2026-06-21T09:42:01.5410022Z             },
2026-06-21T09:42:01.5410176Z             {
2026-06-21T09:42:01.5410384Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.5410542Z               "line": 603
2026-06-21T09:42:01.5410707Z             },
2026-06-21T09:42:01.5410859Z             {
2026-06-21T09:42:01.5411063Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T09:42:01.5411216Z               "line": 68
2026-06-21T09:42:01.5411373Z             },
2026-06-21T09:42:01.5411531Z             {
2026-06-21T09:42:01.5411731Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T09:42:01.5411940Z               "line": 80
2026-06-21T09:42:01.5412084Z             }
2026-06-21T09:42:01.5412245Z           ]
2026-06-21T09:42:01.5412385Z         },
2026-06-21T09:42:01.5412541Z         "int": {
2026-06-21T09:42:01.5412714Z           "complete": true,
2026-06-21T09:42:01.5412880Z           "evidence": [
2026-06-21T09:42:01.5413038Z             {
2026-06-21T09:42:01.5413237Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T09:42:01.5413405Z               "line": 44
2026-06-21T09:42:01.5413550Z             }
2026-06-21T09:42:01.5413709Z           ]
2026-06-21T09:42:01.5413860Z         },
2026-06-21T09:42:01.5414009Z         "unit": {
2026-06-21T09:42:01.5414175Z           "complete": true,
2026-06-21T09:42:01.5414324Z           "evidence": [
2026-06-21T09:42:01.5414476Z             {
2026-06-21T09:42:01.5414743Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.5414896Z               "line": 1181
2026-06-21T09:42:01.5415053Z             },
2026-06-21T09:42:01.5415206Z             {
2026-06-21T09:42:01.5415410Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.5415564Z               "line": 1197
2026-06-21T09:42:01.5415715Z             },
2026-06-21T09:42:01.5415872Z             {
2026-06-21T09:42:01.5416079Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5416246Z               "line": 2439
2026-06-21T09:42:01.5416399Z             },
2026-06-21T09:42:01.5416552Z             {
2026-06-21T09:42:01.5416741Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:42:01.5416896Z               "line": 152
2026-06-21T09:42:01.5417052Z             },
2026-06-21T09:42:01.5417205Z             {
2026-06-21T09:42:01.5417399Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:42:01.5417549Z               "line": 175
2026-06-21T09:42:01.5417705Z             },
2026-06-21T09:42:01.5417854Z             {
2026-06-21T09:42:01.5418048Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:42:01.5418216Z               "line": 186
2026-06-21T09:42:01.5418363Z             },
2026-06-21T09:42:01.5418517Z             {
2026-06-21T09:42:01.5418715Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:42:01.5419080Z               "line": 202
2026-06-21T09:42:01.5419229Z             },
2026-06-21T09:42:01.5419380Z             {
2026-06-21T09:42:01.5419671Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:42:01.5419833Z               "line": 216
2026-06-21T09:42:01.5419976Z             },
2026-06-21T09:42:01.5420125Z             {
2026-06-21T09:42:01.5420344Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T09:42:01.5420496Z               "line": 137
2026-06-21T09:42:01.5420654Z             },
2026-06-21T09:42:01.5420810Z             {
2026-06-21T09:42:01.5420993Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5421149Z               "line": 8152
2026-06-21T09:42:01.5421296Z             },
2026-06-21T09:42:01.5421447Z             {
2026-06-21T09:42:01.5421642Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T09:42:01.5421799Z               "line": 30
2026-06-21T09:42:01.5421952Z             },
2026-06-21T09:42:01.5422105Z             {
2026-06-21T09:42:01.5422301Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T09:42:01.5422453Z               "line": 73
2026-06-21T09:42:01.5422606Z             }
2026-06-21T09:42:01.5422758Z           ]
2026-06-21T09:42:01.5422911Z         }
2026-06-21T09:42:01.5423058Z       }
2026-06-21T09:42:01.5423211Z     },
2026-06-21T09:42:01.5423358Z     {
2026-06-21T09:42:01.5423565Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-21T09:42:01.5429616Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-21T09:42:01.5429807Z       "requiredStages": [
2026-06-21T09:42:01.5429974Z         "impl",
2026-06-21T09:42:01.5430122Z         "unit",
2026-06-21T09:42:01.5430280Z         "int"
2026-06-21T09:42:01.5430437Z       ],
2026-06-21T09:42:01.5430599Z       "stages": {
2026-06-21T09:42:01.5430756Z         "doc": {
2026-06-21T09:42:01.5430919Z           "complete": false,
2026-06-21T09:42:01.5431084Z           "evidence": []
2026-06-21T09:42:01.5431234Z         },
2026-06-21T09:42:01.5431389Z         "impl": {
2026-06-21T09:42:01.5431554Z           "complete": true,
2026-06-21T09:42:01.5431709Z           "evidence": [
2026-06-21T09:42:01.5431861Z             {
2026-06-21T09:42:01.5432073Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5432231Z               "line": 510
2026-06-21T09:42:01.5432378Z             },
2026-06-21T09:42:01.5432522Z             {
2026-06-21T09:42:01.5432736Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5432895Z               "line": 704
2026-06-21T09:42:01.5433045Z             }
2026-06-21T09:42:01.5433200Z           ]
2026-06-21T09:42:01.5433351Z         },
2026-06-21T09:42:01.5433505Z         "int": {
2026-06-21T09:42:01.5433800Z           "complete": true,
2026-06-21T09:42:01.5433966Z           "evidence": [
2026-06-21T09:42:01.5434120Z             {
2026-06-21T09:42:01.5434421Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5434581Z               "line": 1119
2026-06-21T09:42:01.5434738Z             },
2026-06-21T09:42:01.5434900Z             {
2026-06-21T09:42:01.5435110Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T09:42:01.5435271Z               "line": 312
2026-06-21T09:42:01.5435421Z             }
2026-06-21T09:42:01.5435572Z           ]
2026-06-21T09:42:01.5435730Z         },
2026-06-21T09:42:01.5435882Z         "unit": {
2026-06-21T09:42:01.5436055Z           "complete": true,
2026-06-21T09:42:01.5436211Z           "evidence": [
2026-06-21T09:42:01.5436365Z             {
2026-06-21T09:42:01.5436569Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5436728Z               "line": 821
2026-06-21T09:42:01.5436873Z             }
2026-06-21T09:42:01.5437031Z           ]
2026-06-21T09:42:01.5437186Z         }
2026-06-21T09:42:01.5437338Z       }
2026-06-21T09:42:01.5437481Z     },
2026-06-21T09:42:01.5437633Z     {
2026-06-21T09:42:01.5437820Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-21T09:42:01.5438219Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-21T09:42:01.5438440Z       "requiredStages": [
2026-06-21T09:42:01.5438602Z         "impl",
2026-06-21T09:42:01.5438754Z         "unit"
2026-06-21T09:42:01.5438902Z       ],
2026-06-21T09:42:01.5439136Z       "stages": {
2026-06-21T09:42:01.5439298Z         "doc": {
2026-06-21T09:42:01.5439455Z           "complete": true,
2026-06-21T09:42:01.5439623Z           "evidence": [
2026-06-21T09:42:01.5439773Z             {
2026-06-21T09:42:01.5439964Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.5440123Z               "line": 133
2026-06-21T09:42:01.5440273Z             }
2026-06-21T09:42:01.5440428Z           ]
2026-06-21T09:42:01.5440578Z         },
2026-06-21T09:42:01.5440739Z         "impl": {
2026-06-21T09:42:01.5440907Z           "complete": true,
2026-06-21T09:42:01.5441068Z           "evidence": [
2026-06-21T09:42:01.5441226Z             {
2026-06-21T09:42:01.5441421Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:42:01.5441574Z               "line": 65
2026-06-21T09:42:01.5441726Z             },
2026-06-21T09:42:01.5441885Z             {
2026-06-21T09:42:01.5442080Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:42:01.5442242Z               "line": 17
2026-06-21T09:42:01.5442392Z             },
2026-06-21T09:42:01.5442549Z             {
2026-06-21T09:42:01.5442758Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.5442911Z               "line": 146
2026-06-21T09:42:01.5443067Z             },
2026-06-21T09:42:01.5443221Z             {
2026-06-21T09:42:01.5443421Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.5443592Z               "line": 310
2026-06-21T09:42:01.5443745Z             },
2026-06-21T09:42:01.5443898Z             {
2026-06-21T09:42:01.5444099Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.5444254Z               "line": 441
2026-06-21T09:42:01.5444399Z             },
2026-06-21T09:42:01.5444551Z             {
2026-06-21T09:42:01.5444752Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.5444903Z               "line": 32
2026-06-21T09:42:01.5445057Z             },
2026-06-21T09:42:01.5445207Z             {
2026-06-21T09:42:01.5445389Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5445550Z               "line": 1283
2026-06-21T09:42:01.5445690Z             },
2026-06-21T09:42:01.5445846Z             {
2026-06-21T09:42:01.5446024Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5446189Z               "line": 6161
2026-06-21T09:42:01.5446352Z             },
2026-06-21T09:42:01.5446499Z             {
2026-06-21T09:42:01.5446795Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5446959Z               "line": 6443
2026-06-21T09:42:01.5447230Z             }
2026-06-21T09:42:01.5447381Z           ]
2026-06-21T09:42:01.5447543Z         },
2026-06-21T09:42:01.5447698Z         "int": {
2026-06-21T09:42:01.5447865Z           "complete": false,
2026-06-21T09:42:01.5448032Z           "evidence": []
2026-06-21T09:42:01.5448170Z         },
2026-06-21T09:42:01.5448333Z         "unit": {
2026-06-21T09:42:01.5448504Z           "complete": true,
2026-06-21T09:42:01.5448666Z           "evidence": [
2026-06-21T09:42:01.5448824Z             {
2026-06-21T09:42:01.5449080Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:42:01.5449243Z               "line": 94
2026-06-21T09:42:01.5449386Z             },
2026-06-21T09:42:01.5449553Z             {
2026-06-21T09:42:01.5449743Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:42:01.5449901Z               "line": 111
2026-06-21T09:42:01.5450068Z             },
2026-06-21T09:42:01.5450216Z             {
2026-06-21T09:42:01.5450410Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:42:01.5450566Z               "line": 124
2026-06-21T09:42:01.5450722Z             },
2026-06-21T09:42:01.5450871Z             {
2026-06-21T09:42:01.5451056Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:42:01.5451209Z               "line": 134
2026-06-21T09:42:01.5451356Z             },
2026-06-21T09:42:01.5451505Z             {
2026-06-21T09:42:01.5451691Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:42:01.5451848Z               "line": 144
2026-06-21T09:42:01.5452000Z             },
2026-06-21T09:42:01.5452148Z             {
2026-06-21T09:42:01.5452344Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:42:01.5452496Z               "line": 156
2026-06-21T09:42:01.5452654Z             },
2026-06-21T09:42:01.5452802Z             {
2026-06-21T09:42:01.5453029Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.5453189Z               "line": 746
2026-06-21T09:42:01.5453342Z             },
2026-06-21T09:42:01.5453499Z             {
2026-06-21T09:42:01.5453705Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.5453861Z               "line": 309
2026-06-21T09:42:01.5454010Z             }
2026-06-21T09:42:01.5454166Z           ]
2026-06-21T09:42:01.5454305Z         }
2026-06-21T09:42:01.5454463Z       }
2026-06-21T09:42:01.5454620Z     },
2026-06-21T09:42:01.5454772Z     {
2026-06-21T09:42:01.5454964Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-21T09:42:01.5455187Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-21T09:42:01.5455359Z       "requiredStages": [
2026-06-21T09:42:01.5455507Z         "impl",
2026-06-21T09:42:01.5455674Z         "unit"
2026-06-21T09:42:01.5455834Z       ],
2026-06-21T09:42:01.5455998Z       "stages": {
2026-06-21T09:42:01.5456158Z         "doc": {
2026-06-21T09:42:01.5456321Z           "complete": false,
2026-06-21T09:42:01.5456497Z           "evidence": []
2026-06-21T09:42:01.5456640Z         },
2026-06-21T09:42:01.5456797Z         "impl": {
2026-06-21T09:42:01.5456974Z           "complete": true,
2026-06-21T09:42:01.5457121Z           "evidence": [
2026-06-21T09:42:01.5457270Z             {
2026-06-21T09:42:01.5457461Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.5470378Z               "line": 128
2026-06-21T09:42:01.5470563Z             }
2026-06-21T09:42:01.5470720Z           ]
2026-06-21T09:42:01.5470888Z         },
2026-06-21T09:42:01.5471031Z         "int": {
2026-06-21T09:42:01.5471203Z           "complete": false,
2026-06-21T09:42:01.5471369Z           "evidence": []
2026-06-21T09:42:01.5471525Z         },
2026-06-21T09:42:01.5471677Z         "unit": {
2026-06-21T09:42:01.5471842Z           "complete": true,
2026-06-21T09:42:01.5472010Z           "evidence": [
2026-06-21T09:42:01.5472171Z             {
2026-06-21T09:42:01.5472386Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.5472743Z               "line": 205
2026-06-21T09:42:01.5472897Z             }
2026-06-21T09:42:01.5473140Z           ]
2026-06-21T09:42:01.5473282Z         }
2026-06-21T09:42:01.5473435Z       }
2026-06-21T09:42:01.5473583Z     },
2026-06-21T09:42:01.5473740Z     {
2026-06-21T09:42:01.5473936Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-21T09:42:01.5474197Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-21T09:42:01.5474356Z       "requiredStages": [
2026-06-21T09:42:01.5474515Z         "impl",
2026-06-21T09:42:01.5474676Z         "unit"
2026-06-21T09:42:01.5474815Z       ],
2026-06-21T09:42:01.5474972Z       "stages": {
2026-06-21T09:42:01.5475125Z         "doc": {
2026-06-21T09:42:01.5475296Z           "complete": false,
2026-06-21T09:42:01.5475454Z           "evidence": []
2026-06-21T09:42:01.5475611Z         },
2026-06-21T09:42:01.5475769Z         "impl": {
2026-06-21T09:42:01.5475921Z           "complete": true,
2026-06-21T09:42:01.5476084Z           "evidence": [
2026-06-21T09:42:01.5476231Z             {
2026-06-21T09:42:01.5476437Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.5476607Z               "line": 367
2026-06-21T09:42:01.5476761Z             },
2026-06-21T09:42:01.5476916Z             {
2026-06-21T09:42:01.5477113Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.5477279Z               "line": 378
2026-06-21T09:42:01.5477413Z             },
2026-06-21T09:42:01.5477569Z             {
2026-06-21T09:42:01.5477761Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.5477923Z               "line": 396
2026-06-21T09:42:01.5478071Z             }
2026-06-21T09:42:01.5478223Z           ]
2026-06-21T09:42:01.5478376Z         },
2026-06-21T09:42:01.5478518Z         "int": {
2026-06-21T09:42:01.5478691Z           "complete": false,
2026-06-21T09:42:01.5478852Z           "evidence": []
2026-06-21T09:42:01.5479081Z         },
2026-06-21T09:42:01.5479247Z         "unit": {
2026-06-21T09:42:01.5479407Z           "complete": true,
2026-06-21T09:42:01.5479574Z           "evidence": [
2026-06-21T09:42:01.5479717Z             {
2026-06-21T09:42:01.5479917Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.5480070Z               "line": 420
2026-06-21T09:42:01.5480218Z             },
2026-06-21T09:42:01.5480380Z             {
2026-06-21T09:42:01.5480571Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.5480732Z               "line": 441
2026-06-21T09:42:01.5480881Z             },
2026-06-21T09:42:01.5481028Z             {
2026-06-21T09:42:01.5481215Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.5481367Z               "line": 811
2026-06-21T09:42:01.5481525Z             },
2026-06-21T09:42:01.5481672Z             {
2026-06-21T09:42:01.5481864Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.5482019Z               "line": 822
2026-06-21T09:42:01.5482176Z             },
2026-06-21T09:42:01.5482336Z             {
2026-06-21T09:42:01.5482527Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.5482693Z               "line": 835
2026-06-21T09:42:01.5482837Z             }
2026-06-21T09:42:01.5482989Z           ]
2026-06-21T09:42:01.5483138Z         }
2026-06-21T09:42:01.5483284Z       }
2026-06-21T09:42:01.5483434Z     },
2026-06-21T09:42:01.5483581Z     {
2026-06-21T09:42:01.5483787Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-21T09:42:01.5494890Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-21T09:42:01.5495313Z       "requiredStages": [
2026-06-21T09:42:01.5495467Z         "impl",
2026-06-21T09:42:01.5495621Z         "unit",
2026-06-21T09:42:01.5495768Z         "int"
2026-06-21T09:42:01.5495922Z       ],
2026-06-21T09:42:01.5496077Z       "stages": {
2026-06-21T09:42:01.5496236Z         "doc": {
2026-06-21T09:42:01.5496411Z           "complete": false,
2026-06-21T09:42:01.5496570Z           "evidence": []
2026-06-21T09:42:01.5496721Z         },
2026-06-21T09:42:01.5496876Z         "impl": {
2026-06-21T09:42:01.5497036Z           "complete": true,
2026-06-21T09:42:01.5497195Z           "evidence": [
2026-06-21T09:42:01.5497346Z             {
2026-06-21T09:42:01.5497562Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5497718Z               "line": 357
2026-06-21T09:42:01.5497867Z             },
2026-06-21T09:42:01.5498018Z             {
2026-06-21T09:42:01.5498229Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5498389Z               "line": 792
2026-06-21T09:42:01.5498543Z             },
2026-06-21T09:42:01.5498708Z             {
2026-06-21T09:42:01.5498900Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5499143Z               "line": 1061
2026-06-21T09:42:01.5499295Z             }
2026-06-21T09:42:01.5499444Z           ]
2026-06-21T09:42:01.5499596Z         },
2026-06-21T09:42:01.5499750Z         "int": {
2026-06-21T09:42:01.5499915Z           "complete": true,
2026-06-21T09:42:01.5500070Z           "evidence": [
2026-06-21T09:42:01.5500220Z             {
2026-06-21T09:42:01.5500457Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:42:01.5500617Z               "line": 256
2026-06-21T09:42:01.5500767Z             },
2026-06-21T09:42:01.5500917Z             {
2026-06-21T09:42:01.5501166Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:42:01.5501324Z               "line": 382
2026-06-21T09:42:01.5501476Z             }
2026-06-21T09:42:01.5501619Z           ]
2026-06-21T09:42:01.5501767Z         },
2026-06-21T09:42:01.5502025Z         "unit": {
2026-06-21T09:42:01.5502196Z           "complete": true,
2026-06-21T09:42:01.5502359Z           "evidence": [
2026-06-21T09:42:01.5502593Z             {
2026-06-21T09:42:01.5502802Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5502955Z               "line": 2558
2026-06-21T09:42:01.5503111Z             }
2026-06-21T09:42:01.5503263Z           ]
2026-06-21T09:42:01.5503414Z         }
2026-06-21T09:42:01.5503571Z       }
2026-06-21T09:42:01.5503719Z     },
2026-06-21T09:42:01.5503871Z     {
2026-06-21T09:42:01.5504085Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-21T09:42:01.5514655Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-21T09:42:01.5514875Z       "requiredStages": [
2026-06-21T09:42:01.5515022Z         "doc",
2026-06-21T09:42:01.5515171Z         "impl",
2026-06-21T09:42:01.5515332Z         "unit",
2026-06-21T09:42:01.5515495Z         "int"
2026-06-21T09:42:01.5515637Z       ],
2026-06-21T09:42:01.5515796Z       "stages": {
2026-06-21T09:42:01.5515948Z         "doc": {
2026-06-21T09:42:01.5516115Z           "complete": true,
2026-06-21T09:42:01.5516276Z           "evidence": [
2026-06-21T09:42:01.5516423Z             {
2026-06-21T09:42:01.5516602Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.5516756Z               "line": 454
2026-06-21T09:42:01.5516912Z             }
2026-06-21T09:42:01.5517061Z           ]
2026-06-21T09:42:01.5517207Z         },
2026-06-21T09:42:01.5517361Z         "impl": {
2026-06-21T09:42:01.5517536Z           "complete": true,
2026-06-21T09:42:01.5517690Z           "evidence": [
2026-06-21T09:42:01.5517837Z             {
2026-06-21T09:42:01.5518157Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:42:01.5518310Z               "line": 203
2026-06-21T09:42:01.5518558Z             },
2026-06-21T09:42:01.5518706Z             {
2026-06-21T09:42:01.5518912Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.5519143Z               "line": 487
2026-06-21T09:42:01.5519296Z             },
2026-06-21T09:42:01.5519447Z             {
2026-06-21T09:42:01.5519644Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5519810Z               "line": 1862
2026-06-21T09:42:01.5519954Z             },
2026-06-21T09:42:01.5520110Z             {
2026-06-21T09:42:01.5520301Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.5520454Z               "line": 331
2026-06-21T09:42:01.5520598Z             }
2026-06-21T09:42:01.5520735Z           ]
2026-06-21T09:42:01.5520884Z         },
2026-06-21T09:42:01.5521036Z         "int": {
2026-06-21T09:42:01.5521204Z           "complete": true,
2026-06-21T09:42:01.5521359Z           "evidence": [
2026-06-21T09:42:01.5521536Z             {
2026-06-21T09:42:01.5521747Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:42:01.5521896Z               "line": 737
2026-06-21T09:42:01.5522052Z             },
2026-06-21T09:42:01.5522201Z             {
2026-06-21T09:42:01.5522410Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:42:01.5522568Z               "line": 854
2026-06-21T09:42:01.5522710Z             },
2026-06-21T09:42:01.5522864Z             {
2026-06-21T09:42:01.5523108Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:42:01.5523268Z               "line": 544
2026-06-21T09:42:01.5523418Z             },
2026-06-21T09:42:01.5523559Z             {
2026-06-21T09:42:01.5523808Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:42:01.5523965Z               "line": 1800
2026-06-21T09:42:01.5524118Z             },
2026-06-21T09:42:01.5524269Z             {
2026-06-21T09:42:01.5524519Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-21T09:42:01.5524681Z               "line": 266
2026-06-21T09:42:01.5524830Z             }
2026-06-21T09:42:01.5524986Z           ]
2026-06-21T09:42:01.5525130Z         },
2026-06-21T09:42:01.5525282Z         "unit": {
2026-06-21T09:42:01.5525445Z           "complete": true,
2026-06-21T09:42:01.5525607Z           "evidence": [
2026-06-21T09:42:01.5525759Z             {
2026-06-21T09:42:01.5525950Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.5526103Z               "line": 985
2026-06-21T09:42:01.5526251Z             },
2026-06-21T09:42:01.5526403Z             {
2026-06-21T09:42:01.5526600Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.5526760Z               "line": 1019
2026-06-21T09:42:01.5526902Z             }
2026-06-21T09:42:01.5527054Z           ]
2026-06-21T09:42:01.5527210Z         }
2026-06-21T09:42:01.5527359Z       }
2026-06-21T09:42:01.5527520Z     },
2026-06-21T09:42:01.5527668Z     {
2026-06-21T09:42:01.5527854Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-21T09:42:01.5528745Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-21T09:42:01.5528904Z       "requiredStages": [
2026-06-21T09:42:01.5533062Z         "impl",
2026-06-21T09:42:01.5533270Z         "unit"
2026-06-21T09:42:01.5533419Z       ],
2026-06-21T09:42:01.5533576Z       "stages": {
2026-06-21T09:42:01.5533743Z         "doc": {
2026-06-21T09:42:01.5533910Z           "complete": false,
2026-06-21T09:42:01.5534072Z           "evidence": []
2026-06-21T09:42:01.5534229Z         },
2026-06-21T09:42:01.5534387Z         "impl": {
2026-06-21T09:42:01.5534559Z           "complete": true,
2026-06-21T09:42:01.5534720Z           "evidence": [
2026-06-21T09:42:01.5534871Z             {
2026-06-21T09:42:01.5535271Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.5535432Z               "line": 759
2026-06-21T09:42:01.5535681Z             }
2026-06-21T09:42:01.5535827Z           ]
2026-06-21T09:42:01.5535981Z         },
2026-06-21T09:42:01.5536133Z         "int": {
2026-06-21T09:42:01.5536305Z           "complete": false,
2026-06-21T09:42:01.5536476Z           "evidence": []
2026-06-21T09:42:01.5536629Z         },
2026-06-21T09:42:01.5536786Z         "unit": {
2026-06-21T09:42:01.5536935Z           "complete": true,
2026-06-21T09:42:01.5537092Z           "evidence": [
2026-06-21T09:42:01.5537245Z             {
2026-06-21T09:42:01.5537462Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.5537618Z               "line": 873
2026-06-21T09:42:01.5537775Z             }
2026-06-21T09:42:01.5537929Z           ]
2026-06-21T09:42:01.5538080Z         }
2026-06-21T09:42:01.5538233Z       }
2026-06-21T09:42:01.5538390Z     },
2026-06-21T09:42:01.5538543Z     {
2026-06-21T09:42:01.5538778Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-21T09:42:01.5542409Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-21T09:42:01.5542574Z       "requiredStages": [
2026-06-21T09:42:01.5542745Z         "impl",
2026-06-21T09:42:01.5542901Z         "unit",
2026-06-21T09:42:01.5543050Z         "int"
2026-06-21T09:42:01.5543196Z       ],
2026-06-21T09:42:01.5543354Z       "stages": {
2026-06-21T09:42:01.5543502Z         "doc": {
2026-06-21T09:42:01.5543674Z           "complete": false,
2026-06-21T09:42:01.5543831Z           "evidence": []
2026-06-21T09:42:01.5543984Z         },
2026-06-21T09:42:01.5544141Z         "impl": {
2026-06-21T09:42:01.5544303Z           "complete": true,
2026-06-21T09:42:01.5544451Z           "evidence": [
2026-06-21T09:42:01.5544604Z             {
2026-06-21T09:42:01.5544829Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5544994Z               "line": 705
2026-06-21T09:42:01.5545144Z             }
2026-06-21T09:42:01.5545290Z           ]
2026-06-21T09:42:01.5545441Z         },
2026-06-21T09:42:01.5545598Z         "int": {
2026-06-21T09:42:01.5545753Z           "complete": true,
2026-06-21T09:42:01.5545917Z           "evidence": [
2026-06-21T09:42:01.5546078Z             {
2026-06-21T09:42:01.5546297Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-21T09:42:01.5546470Z               "line": 24
2026-06-21T09:42:01.5546617Z             }
2026-06-21T09:42:01.5546770Z           ]
2026-06-21T09:42:01.5546918Z         },
2026-06-21T09:42:01.5547075Z         "unit": {
2026-06-21T09:42:01.5547251Z           "complete": true,
2026-06-21T09:42:01.5547400Z           "evidence": [
2026-06-21T09:42:01.5547556Z             {
2026-06-21T09:42:01.5547763Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5547923Z               "line": 918
2026-06-21T09:42:01.5548066Z             }
2026-06-21T09:42:01.5548221Z           ]
2026-06-21T09:42:01.5548373Z         }
2026-06-21T09:42:01.5548526Z       }
2026-06-21T09:42:01.5548683Z     },
2026-06-21T09:42:01.5548822Z     {
2026-06-21T09:42:01.5549103Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-21T09:42:01.5554468Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-21T09:42:01.5554887Z       "requiredStages": [
2026-06-21T09:42:01.5555040Z         "impl",
2026-06-21T09:42:01.5555202Z         "unit",
2026-06-21T09:42:01.5555345Z         "int"
2026-06-21T09:42:01.5555503Z       ],
2026-06-21T09:42:01.5555660Z       "stages": {
2026-06-21T09:42:01.5555804Z         "doc": {
2026-06-21T09:42:01.5555978Z           "complete": false,
2026-06-21T09:42:01.5556140Z           "evidence": []
2026-06-21T09:42:01.5556290Z         },
2026-06-21T09:42:01.5556448Z         "impl": {
2026-06-21T09:42:01.5556619Z           "complete": true,
2026-06-21T09:42:01.5556772Z           "evidence": [
2026-06-21T09:42:01.5556924Z             {
2026-06-21T09:42:01.5557140Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5557301Z               "line": 391
2026-06-21T09:42:01.5557468Z             },
2026-06-21T09:42:01.5557606Z             {
2026-06-21T09:42:01.5557821Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.5557979Z               "line": 343
2026-06-21T09:42:01.5558130Z             },
2026-06-21T09:42:01.5558284Z             {
2026-06-21T09:42:01.5558459Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5558616Z               "line": 1750
2026-06-21T09:42:01.5558771Z             },
2026-06-21T09:42:01.5558924Z             {
2026-06-21T09:42:01.5559176Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5559344Z               "line": 3191
2026-06-21T09:42:01.5559496Z             }
2026-06-21T09:42:01.5559639Z           ]
2026-06-21T09:42:01.5559796Z         },
2026-06-21T09:42:01.5559945Z         "int": {
2026-06-21T09:42:01.5560116Z           "complete": true,
2026-06-21T09:42:01.5560274Z           "evidence": [
2026-06-21T09:42:01.5560431Z             {
2026-06-21T09:42:01.5560659Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T09:42:01.5560823Z               "line": 353
2026-06-21T09:42:01.5560974Z             },
2026-06-21T09:42:01.5561128Z             {
2026-06-21T09:42:01.5561374Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-21T09:42:01.5561541Z               "line": 23
2026-06-21T09:42:01.5561693Z             }
2026-06-21T09:42:01.5561856Z           ]
2026-06-21T09:42:01.5562003Z         },
2026-06-21T09:42:01.5562166Z         "unit": {
2026-06-21T09:42:01.5562332Z           "complete": true,
2026-06-21T09:42:01.5562504Z           "evidence": [
2026-06-21T09:42:01.5562647Z             {
2026-06-21T09:42:01.5562848Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.5563009Z               "line": 743
2026-06-21T09:42:01.5563158Z             },
2026-06-21T09:42:01.5563319Z             {
2026-06-21T09:42:01.5563501Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5563676Z               "line": 7863
2026-06-21T09:42:01.5563945Z             }
2026-06-21T09:42:01.5564093Z           ]
2026-06-21T09:42:01.5564255Z         }
2026-06-21T09:42:01.5564408Z       }
2026-06-21T09:42:01.5564660Z     },
2026-06-21T09:42:01.5564813Z     {
2026-06-21T09:42:01.5565024Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-21T09:42:01.5569961Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-21T09:42:01.5570148Z       "requiredStages": [
2026-06-21T09:42:01.5570295Z         "impl",
2026-06-21T09:42:01.5570458Z         "unit",
2026-06-21T09:42:01.5570610Z         "int"
2026-06-21T09:42:01.5570762Z       ],
2026-06-21T09:42:01.5570910Z       "stages": {
2026-06-21T09:42:01.5571068Z         "doc": {
2026-06-21T09:42:01.5571238Z           "complete": false,
2026-06-21T09:42:01.5571397Z           "evidence": []
2026-06-21T09:42:01.5571543Z         },
2026-06-21T09:42:01.5571698Z         "impl": {
2026-06-21T09:42:01.5571863Z           "complete": true,
2026-06-21T09:42:01.5572020Z           "evidence": [
2026-06-21T09:42:01.5572173Z             {
2026-06-21T09:42:01.5572378Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5572539Z               "line": 64
2026-06-21T09:42:01.5572698Z             },
2026-06-21T09:42:01.5572845Z             {
2026-06-21T09:42:01.5573051Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5573211Z               "line": 78
2026-06-21T09:42:01.5573370Z             },
2026-06-21T09:42:01.5573526Z             {
2026-06-21T09:42:01.5573722Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5573879Z               "line": 170
2026-06-21T09:42:01.5574033Z             },
2026-06-21T09:42:01.5574183Z             {
2026-06-21T09:42:01.5574378Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5574538Z               "line": 185
2026-06-21T09:42:01.5574692Z             },
2026-06-21T09:42:01.5574838Z             {
2026-06-21T09:42:01.5575040Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5575196Z               "line": 195
2026-06-21T09:42:01.5575340Z             },
2026-06-21T09:42:01.5575492Z             {
2026-06-21T09:42:01.5575693Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5575860Z               "line": 205
2026-06-21T09:42:01.5576008Z             },
2026-06-21T09:42:01.5576170Z             {
2026-06-21T09:42:01.5576369Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5576524Z               "line": 294
2026-06-21T09:42:01.5576684Z             },
2026-06-21T09:42:01.5576828Z             {
2026-06-21T09:42:01.5577041Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5577194Z               "line": 308
2026-06-21T09:42:01.5577340Z             },
2026-06-21T09:42:01.5577487Z             {
2026-06-21T09:42:01.5577687Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5577955Z               "line": 377
2026-06-21T09:42:01.5578107Z             },
2026-06-21T09:42:01.5578275Z             {
2026-06-21T09:42:01.5578565Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5578722Z               "line": 437
2026-06-21T09:42:01.5578875Z             },
2026-06-21T09:42:01.5579119Z             {
2026-06-21T09:42:01.5579337Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5579496Z               "line": 455
2026-06-21T09:42:01.5579641Z             }
2026-06-21T09:42:01.5579789Z           ]
2026-06-21T09:42:01.5579939Z         },
2026-06-21T09:42:01.5580092Z         "int": {
2026-06-21T09:42:01.5580263Z           "complete": true,
2026-06-21T09:42:01.5580422Z           "evidence": [
2026-06-21T09:42:01.5580578Z             {
2026-06-21T09:42:01.5580807Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T09:42:01.5580969Z               "line": 45
2026-06-21T09:42:01.5581112Z             },
2026-06-21T09:42:01.5581265Z             {
2026-06-21T09:42:01.5581494Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T09:42:01.5581657Z               "line": 354
2026-06-21T09:42:01.5581803Z             },
2026-06-21T09:42:01.5581953Z             {
2026-06-21T09:42:01.5582190Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T09:42:01.5582358Z               "line": 31
2026-06-21T09:42:01.5582489Z             }
2026-06-21T09:42:01.5582647Z           ]
2026-06-21T09:42:01.5582799Z         },
2026-06-21T09:42:01.5582938Z         "unit": {
2026-06-21T09:42:01.5583109Z           "complete": true,
2026-06-21T09:42:01.5583268Z           "evidence": [
2026-06-21T09:42:01.5583424Z             {
2026-06-21T09:42:01.5583634Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5583791Z               "line": 727
2026-06-21T09:42:01.5583935Z             }
2026-06-21T09:42:01.5584086Z           ]
2026-06-21T09:42:01.5584245Z         }
2026-06-21T09:42:01.5584396Z       }
2026-06-21T09:42:01.5584556Z     },
2026-06-21T09:42:01.5584706Z     {
2026-06-21T09:42:01.5584901Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-21T09:42:01.5585267Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-21T09:42:01.5585422Z       "requiredStages": [
2026-06-21T09:42:01.5585586Z         "impl",
2026-06-21T09:42:01.5585742Z         "unit"
2026-06-21T09:42:01.5585896Z       ],
2026-06-21T09:42:01.5586057Z       "stages": {
2026-06-21T09:42:01.5586210Z         "doc": {
2026-06-21T09:42:01.5586386Z           "complete": false,
2026-06-21T09:42:01.5586539Z           "evidence": []
2026-06-21T09:42:01.5586696Z         },
2026-06-21T09:42:01.5586849Z         "impl": {
2026-06-21T09:42:01.5587025Z           "complete": true,
2026-06-21T09:42:01.5587174Z           "evidence": [
2026-06-21T09:42:01.5587335Z             {
2026-06-21T09:42:01.5587526Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:42:01.5587687Z               "line": 14
2026-06-21T09:42:01.5587848Z             },
2026-06-21T09:42:01.5587999Z             {
2026-06-21T09:42:01.5588200Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.5588357Z               "line": 566
2026-06-21T09:42:01.5588506Z             }
2026-06-21T09:42:01.5588653Z           ]
2026-06-21T09:42:01.5588801Z         },
2026-06-21T09:42:01.5589030Z         "int": {
2026-06-21T09:42:01.5589187Z           "complete": false,
2026-06-21T09:42:01.5589350Z           "evidence": []
2026-06-21T09:42:01.5589506Z         },
2026-06-21T09:42:01.5589669Z         "unit": {
2026-06-21T09:42:01.5589830Z           "complete": true,
2026-06-21T09:42:01.5589989Z           "evidence": [
2026-06-21T09:42:01.5590144Z             {
2026-06-21T09:42:01.5590330Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:42:01.5590485Z               "line": 130
2026-06-21T09:42:01.5590628Z             },
2026-06-21T09:42:01.5590781Z             {
2026-06-21T09:42:01.5591077Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:42:01.5591239Z               "line": 138
2026-06-21T09:42:01.5591471Z             },
2026-06-21T09:42:01.5591626Z             {
2026-06-21T09:42:01.5591810Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:42:01.5591978Z               "line": 146
2026-06-21T09:42:01.5592125Z             },
2026-06-21T09:42:01.5592270Z             {
2026-06-21T09:42:01.5592454Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:42:01.5592617Z               "line": 154
2026-06-21T09:42:01.5592759Z             },
2026-06-21T09:42:01.5592918Z             {
2026-06-21T09:42:01.5593106Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:42:01.5593260Z               "line": 162
2026-06-21T09:42:01.5593412Z             },
2026-06-21T09:42:01.5593565Z             {
2026-06-21T09:42:01.5593750Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:42:01.5593903Z               "line": 170
2026-06-21T09:42:01.5594055Z             }
2026-06-21T09:42:01.5594218Z           ]
2026-06-21T09:42:01.5594365Z         }
2026-06-21T09:42:01.5594519Z       }
2026-06-21T09:42:01.5594670Z     },
2026-06-21T09:42:01.5594820Z     {
2026-06-21T09:42:01.5595004Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-21T09:42:01.5596336Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-21T09:42:01.5596513Z       "requiredStages": [
2026-06-21T09:42:01.5596670Z         "impl",
2026-06-21T09:42:01.5596823Z         "unit"
2026-06-21T09:42:01.5596956Z       ],
2026-06-21T09:42:01.5597104Z       "stages": {
2026-06-21T09:42:01.5597256Z         "doc": {
2026-06-21T09:42:01.5597428Z           "complete": false,
2026-06-21T09:42:01.5597590Z           "evidence": []
2026-06-21T09:42:01.5597738Z         },
2026-06-21T09:42:01.5597905Z         "impl": {
2026-06-21T09:42:01.5598063Z           "complete": true,
2026-06-21T09:42:01.5598232Z           "evidence": [
2026-06-21T09:42:01.5598375Z             {
2026-06-21T09:42:01.5598622Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:42:01.5598793Z               "line": 34
2026-06-21T09:42:01.5598937Z             }
2026-06-21T09:42:01.5599141Z           ]
2026-06-21T09:42:01.5599294Z         },
2026-06-21T09:42:01.5599456Z         "int": {
2026-06-21T09:42:01.5599614Z           "complete": false,
2026-06-21T09:42:01.5599790Z           "evidence": []
2026-06-21T09:42:01.5599938Z         },
2026-06-21T09:42:01.5600081Z         "unit": {
2026-06-21T09:42:01.5600249Z           "complete": true,
2026-06-21T09:42:01.5600405Z           "evidence": [
2026-06-21T09:42:01.5600554Z             {
2026-06-21T09:42:01.5600785Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:42:01.5600951Z               "line": 188
2026-06-21T09:42:01.5601107Z             },
2026-06-21T09:42:01.5601256Z             {
2026-06-21T09:42:01.5601499Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:42:01.5601665Z               "line": 200
2026-06-21T09:42:01.5601823Z             },
2026-06-21T09:42:01.5601971Z             {
2026-06-21T09:42:01.5602195Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:42:01.5602366Z               "line": 211
2026-06-21T09:42:01.5602515Z             },
2026-06-21T09:42:01.5602671Z             {
2026-06-21T09:42:01.5602900Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:42:01.5603073Z               "line": 253
2026-06-21T09:42:01.5603229Z             },
2026-06-21T09:42:01.5603383Z             {
2026-06-21T09:42:01.5603619Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:42:01.5603772Z               "line": 277
2026-06-21T09:42:01.5603928Z             },
2026-06-21T09:42:01.5604234Z             {
2026-06-21T09:42:01.5604477Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:42:01.5604736Z               "line": 300
2026-06-21T09:42:01.5604883Z             },
2026-06-21T09:42:01.5605031Z             {
2026-06-21T09:42:01.5605279Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:42:01.5605445Z               "line": 316
2026-06-21T09:42:01.5605594Z             }
2026-06-21T09:42:01.5605751Z           ]
2026-06-21T09:42:01.5605906Z         }
2026-06-21T09:42:01.5606059Z       }
2026-06-21T09:42:01.5606210Z     },
2026-06-21T09:42:01.5606358Z     {
2026-06-21T09:42:01.5606552Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-21T09:42:01.5607388Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-21T09:42:01.5607560Z       "requiredStages": [
2026-06-21T09:42:01.5607736Z         "impl",
2026-06-21T09:42:01.5607884Z         "unit"
2026-06-21T09:42:01.5608035Z       ],
2026-06-21T09:42:01.5608194Z       "stages": {
2026-06-21T09:42:01.5608350Z         "doc": {
2026-06-21T09:42:01.5608514Z           "complete": false,
2026-06-21T09:42:01.5608674Z           "evidence": []
2026-06-21T09:42:01.5608831Z         },
2026-06-21T09:42:01.5609039Z         "impl": {
2026-06-21T09:42:01.5609201Z           "complete": true,
2026-06-21T09:42:01.5609358Z           "evidence": [
2026-06-21T09:42:01.5609517Z             {
2026-06-21T09:42:01.5609725Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.5609883Z               "line": 29
2026-06-21T09:42:01.5610040Z             },
2026-06-21T09:42:01.5610193Z             {
2026-06-21T09:42:01.5610393Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.5610541Z               "line": 174
2026-06-21T09:42:01.5610693Z             },
2026-06-21T09:42:01.5610851Z             {
2026-06-21T09:42:01.5611061Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.5611222Z               "line": 194
2026-06-21T09:42:01.5611374Z             },
2026-06-21T09:42:01.5611530Z             {
2026-06-21T09:42:01.5611729Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.5611896Z               "line": 222
2026-06-21T09:42:01.5612049Z             }
2026-06-21T09:42:01.5612202Z           ]
2026-06-21T09:42:01.5612354Z         },
2026-06-21T09:42:01.5612502Z         "int": {
2026-06-21T09:42:01.5612674Z           "complete": false,
2026-06-21T09:42:01.5612826Z           "evidence": []
2026-06-21T09:42:01.5612979Z         },
2026-06-21T09:42:01.5613136Z         "unit": {
2026-06-21T09:42:01.5613289Z           "complete": true,
2026-06-21T09:42:01.5613456Z           "evidence": [
2026-06-21T09:42:01.5613604Z             {
2026-06-21T09:42:01.5613808Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.5613967Z               "line": 329
2026-06-21T09:42:01.5614127Z             },
2026-06-21T09:42:01.5614289Z             {
2026-06-21T09:42:01.5614489Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.5614657Z               "line": 344
2026-06-21T09:42:01.5614804Z             },
2026-06-21T09:42:01.5614962Z             {
2026-06-21T09:42:01.5615151Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.5615315Z               "line": 417
2026-06-21T09:42:01.5615462Z             },
2026-06-21T09:42:01.5615606Z             {
2026-06-21T09:42:01.5615805Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.5615959Z               "line": 433
2026-06-21T09:42:01.5616115Z             },
2026-06-21T09:42:01.5616269Z             {
2026-06-21T09:42:01.5616476Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.5616643Z               "line": 492
2026-06-21T09:42:01.5616789Z             },
2026-06-21T09:42:01.5616932Z             {
2026-06-21T09:42:01.5617243Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.5617408Z               "line": 506
2026-06-21T09:42:01.5617652Z             },
2026-06-21T09:42:01.5617801Z             {
2026-06-21T09:42:01.5618004Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.5618168Z               "line": 517
2026-06-21T09:42:01.5618319Z             },
2026-06-21T09:42:01.5618464Z             {
2026-06-21T09:42:01.5618662Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.5618821Z               "line": 528
2026-06-21T09:42:01.5619026Z             }
2026-06-21T09:42:01.5619179Z           ]
2026-06-21T09:42:01.5619334Z         }
2026-06-21T09:42:01.5619491Z       }
2026-06-21T09:42:01.5619632Z     },
2026-06-21T09:42:01.5619790Z     {
2026-06-21T09:42:01.5619994Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-21T09:42:01.5620992Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-21T09:42:01.5621162Z       "requiredStages": [
2026-06-21T09:42:01.5621307Z         "impl",
2026-06-21T09:42:01.5621458Z         "unit"
2026-06-21T09:42:01.5621607Z       ],
2026-06-21T09:42:01.5621768Z       "stages": {
2026-06-21T09:42:01.5621924Z         "doc": {
2026-06-21T09:42:01.5622085Z           "complete": false,
2026-06-21T09:42:01.5622251Z           "evidence": []
2026-06-21T09:42:01.5622400Z         },
2026-06-21T09:42:01.5622561Z         "impl": {
2026-06-21T09:42:01.5622719Z           "complete": true,
2026-06-21T09:42:01.5622885Z           "evidence": [
2026-06-21T09:42:01.5623034Z             {
2026-06-21T09:42:01.5623254Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.5623415Z               "line": 27
2026-06-21T09:42:01.5623563Z             },
2026-06-21T09:42:01.5623720Z             {
2026-06-21T09:42:01.5623940Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.5624106Z               "line": 110
2026-06-21T09:42:01.5624260Z             },
2026-06-21T09:42:01.5624407Z             {
2026-06-21T09:42:01.5624626Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.5624787Z               "line": 153
2026-06-21T09:42:01.5624941Z             },
2026-06-21T09:42:01.5625092Z             {
2026-06-21T09:42:01.5625322Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.5625484Z               "line": 182
2026-06-21T09:42:01.5625641Z             },
2026-06-21T09:42:01.5625793Z             {
2026-06-21T09:42:01.5626036Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:42:01.5626204Z               "line": 31
2026-06-21T09:42:01.5626360Z             },
2026-06-21T09:42:01.5626514Z             {
2026-06-21T09:42:01.5626762Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:42:01.5626932Z               "line": 113
2026-06-21T09:42:01.5627084Z             },
2026-06-21T09:42:01.5627226Z             {
2026-06-21T09:42:01.5627474Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:42:01.5627639Z               "line": 138
2026-06-21T09:42:01.5627784Z             }
2026-06-21T09:42:01.5627935Z           ]
2026-06-21T09:42:01.5628084Z         },
2026-06-21T09:42:01.5628231Z         "int": {
2026-06-21T09:42:01.5628399Z           "complete": false,
2026-06-21T09:42:01.5628560Z           "evidence": []
2026-06-21T09:42:01.5628699Z         },
2026-06-21T09:42:01.5628856Z         "unit": {
2026-06-21T09:42:01.5629109Z           "complete": true,
2026-06-21T09:42:01.5629271Z           "evidence": [
2026-06-21T09:42:01.5629424Z             {
2026-06-21T09:42:01.5629649Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.5629809Z               "line": 261
2026-06-21T09:42:01.5629961Z             },
2026-06-21T09:42:01.5630107Z             {
2026-06-21T09:42:01.5630432Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.5630593Z               "line": 276
2026-06-21T09:42:01.5630836Z             },
2026-06-21T09:42:01.5630980Z             {
2026-06-21T09:42:01.5631194Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.5631360Z               "line": 293
2026-06-21T09:42:01.5631508Z             },
2026-06-21T09:42:01.5631666Z             {
2026-06-21T09:42:01.5631881Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.5632051Z               "line": 310
2026-06-21T09:42:01.5632201Z             },
2026-06-21T09:42:01.5632356Z             {
2026-06-21T09:42:01.5632580Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.5632731Z               "line": 327
2026-06-21T09:42:01.5632888Z             },
2026-06-21T09:42:01.5633040Z             {
2026-06-21T09:42:01.5633260Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.5633426Z               "line": 366
2026-06-21T09:42:01.5633575Z             },
2026-06-21T09:42:01.5633741Z             {
2026-06-21T09:42:01.5633975Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:42:01.5634138Z               "line": 179
2026-06-21T09:42:01.5634290Z             },
2026-06-21T09:42:01.5634448Z             {
2026-06-21T09:42:01.5634686Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:42:01.5634853Z               "line": 194
2026-06-21T09:42:01.5635010Z             },
2026-06-21T09:42:01.5635163Z             {
2026-06-21T09:42:01.5635399Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:42:01.5635557Z               "line": 204
2026-06-21T09:42:01.5635714Z             },
2026-06-21T09:42:01.5635868Z             {
2026-06-21T09:42:01.5636106Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:42:01.5636267Z               "line": 259
2026-06-21T09:42:01.5636416Z             },
2026-06-21T09:42:01.5636572Z             {
2026-06-21T09:42:01.5636797Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:42:01.5636959Z               "line": 269
2026-06-21T09:42:01.5637121Z             },
2026-06-21T09:42:01.5637269Z             {
2026-06-21T09:42:01.5637507Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:42:01.5637659Z               "line": 283
2026-06-21T09:42:01.5637805Z             }
2026-06-21T09:42:01.5637947Z           ]
2026-06-21T09:42:01.5638110Z         }
2026-06-21T09:42:01.5638266Z       }
2026-06-21T09:42:01.5638410Z     },
2026-06-21T09:42:01.5638567Z     {
2026-06-21T09:42:01.5638758Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-21T09:42:01.5639144Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-21T09:42:01.5639302Z       "requiredStages": [],
2026-06-21T09:42:01.5639473Z       "stages": {
2026-06-21T09:42:01.5639636Z         "doc": {
2026-06-21T09:42:01.5639806Z           "complete": false,
2026-06-21T09:42:01.5639979Z           "evidence": []
2026-06-21T09:42:01.5640136Z         },
2026-06-21T09:42:01.5640299Z         "impl": {
2026-06-21T09:42:01.5640464Z           "complete": false,
2026-06-21T09:42:01.5640625Z           "evidence": []
2026-06-21T09:42:01.5640781Z         },
2026-06-21T09:42:01.5640925Z         "int": {
2026-06-21T09:42:01.5641091Z           "complete": false,
2026-06-21T09:42:01.5641240Z           "evidence": []
2026-06-21T09:42:01.5641391Z         },
2026-06-21T09:42:01.5641550Z         "unit": {
2026-06-21T09:42:01.5641720Z           "complete": false,
2026-06-21T09:42:01.5641879Z           "evidence": []
2026-06-21T09:42:01.5642025Z         }
2026-06-21T09:42:01.5642179Z       }
2026-06-21T09:42:01.5642331Z     },
2026-06-21T09:42:01.5642480Z     {
2026-06-21T09:42:01.5642679Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-21T09:42:01.5643887Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-21T09:42:01.5644253Z       "requiredStages": [
2026-06-21T09:42:01.5644407Z         "impl",
2026-06-21T09:42:01.5644563Z         "unit"
2026-06-21T09:42:01.5644713Z       ],
2026-06-21T09:42:01.5644874Z       "stages": {
2026-06-21T09:42:01.5645027Z         "doc": {
2026-06-21T09:42:01.5645193Z           "complete": false,
2026-06-21T09:42:01.5645362Z           "evidence": []
2026-06-21T09:42:01.5645513Z         },
2026-06-21T09:42:01.5645671Z         "impl": {
2026-06-21T09:42:01.5645826Z           "complete": true,
2026-06-21T09:42:01.5645984Z           "evidence": [
2026-06-21T09:42:01.5646141Z             {
2026-06-21T09:42:01.5646356Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:42:01.5646522Z               "line": 26
2026-06-21T09:42:01.5646680Z             },
2026-06-21T09:42:01.5646827Z             {
2026-06-21T09:42:01.5647038Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:42:01.5647204Z               "line": 95
2026-06-21T09:42:01.5647362Z             },
2026-06-21T09:42:01.5647509Z             {
2026-06-21T09:42:01.5647719Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:42:01.5647877Z               "line": 166
2026-06-21T09:42:01.5648029Z             },
2026-06-21T09:42:01.5648181Z             {
2026-06-21T09:42:01.5648393Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:42:01.5648551Z               "line": 19
2026-06-21T09:42:01.5648698Z             },
2026-06-21T09:42:01.5648856Z             {
2026-06-21T09:42:01.5649122Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:42:01.5649290Z               "line": 50
2026-06-21T09:42:01.5649442Z             },
2026-06-21T09:42:01.5649595Z             {
2026-06-21T09:42:01.5649781Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T09:42:01.5649938Z               "line": 18
2026-06-21T09:42:01.5650086Z             },
2026-06-21T09:42:01.5650243Z             {
2026-06-21T09:42:01.5650435Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T09:42:01.5650586Z               "line": 71
2026-06-21T09:42:01.5650749Z             },
2026-06-21T09:42:01.5650901Z             {
2026-06-21T09:42:01.5651101Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.5651265Z               "line": 87
2026-06-21T09:42:01.5651413Z             }
2026-06-21T09:42:01.5651570Z           ]
2026-06-21T09:42:01.5651718Z         },
2026-06-21T09:42:01.5651871Z         "int": {
2026-06-21T09:42:01.5652043Z           "complete": false,
2026-06-21T09:42:01.5652200Z           "evidence": []
2026-06-21T09:42:01.5652357Z         },
2026-06-21T09:42:01.5652509Z         "unit": {
2026-06-21T09:42:01.5652677Z           "complete": true,
2026-06-21T09:42:01.5652833Z           "evidence": [
2026-06-21T09:42:01.5652992Z             {
2026-06-21T09:42:01.5653211Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:42:01.5653369Z               "line": 289
2026-06-21T09:42:01.5653529Z             },
2026-06-21T09:42:01.5653672Z             {
2026-06-21T09:42:01.5653869Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:42:01.5654033Z               "line": 314
2026-06-21T09:42:01.5654174Z             },
2026-06-21T09:42:01.5654324Z             {
2026-06-21T09:42:01.5654527Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:42:01.5654695Z               "line": 350
2026-06-21T09:42:01.5654837Z             },
2026-06-21T09:42:01.5654991Z             {
2026-06-21T09:42:01.5655191Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:42:01.5655358Z               "line": 418
2026-06-21T09:42:01.5655510Z             },
2026-06-21T09:42:01.5655659Z             {
2026-06-21T09:42:01.5655869Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:42:01.5656169Z               "line": 429
2026-06-21T09:42:01.5656330Z             },
2026-06-21T09:42:01.5656587Z             {
2026-06-21T09:42:01.5656796Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:42:01.5656964Z               "line": 460
2026-06-21T09:42:01.5657111Z             },
2026-06-21T09:42:01.5657269Z             {
2026-06-21T09:42:01.5657474Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:42:01.5657641Z               "line": 471
2026-06-21T09:42:01.5657789Z             },
2026-06-21T09:42:01.5657936Z             {
2026-06-21T09:42:01.5658147Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:42:01.5658308Z               "line": 77
2026-06-21T09:42:01.5658462Z             },
2026-06-21T09:42:01.5658613Z             {
2026-06-21T09:42:01.5658813Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:42:01.5659058Z               "line": 97
2026-06-21T09:42:01.5659212Z             },
2026-06-21T09:42:01.5659368Z             {
2026-06-21T09:42:01.5659568Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:42:01.5659731Z               "line": 112
2026-06-21T09:42:01.5659883Z             },
2026-06-21T09:42:01.5660036Z             {
2026-06-21T09:42:01.5660245Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:42:01.5660399Z               "line": 123
2026-06-21T09:42:01.5663605Z             },
2026-06-21T09:42:01.5663785Z             {
2026-06-21T09:42:01.5664023Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:42:01.5664179Z               "line": 130
2026-06-21T09:42:01.5664340Z             },
2026-06-21T09:42:01.5664506Z             {
2026-06-21T09:42:01.5664730Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:42:01.5664898Z               "line": 145
2026-06-21T09:42:01.5665050Z             },
2026-06-21T09:42:01.5665208Z             {
2026-06-21T09:42:01.5665407Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T09:42:01.5665580Z               "line": 115
2026-06-21T09:42:01.5665741Z             },
2026-06-21T09:42:01.5665894Z             {
2026-06-21T09:42:01.5666099Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T09:42:01.5666252Z               "line": 130
2026-06-21T09:42:01.5666409Z             },
2026-06-21T09:42:01.5666557Z             {
2026-06-21T09:42:01.5666763Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.5666923Z               "line": 428
2026-06-21T09:42:01.5667075Z             }
2026-06-21T09:42:01.5667229Z           ]
2026-06-21T09:42:01.5667380Z         }
2026-06-21T09:42:01.5667529Z       }
2026-06-21T09:42:01.5667666Z     },
2026-06-21T09:42:01.5667815Z     {
2026-06-21T09:42:01.5668020Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-21T09:42:01.5677285Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-21T09:42:01.5677703Z       "requiredStages": [
2026-06-21T09:42:01.5677859Z         "impl",
2026-06-21T09:42:01.5678013Z         "unit",
2026-06-21T09:42:01.5678160Z         "int"
2026-06-21T09:42:01.5678309Z       ],
2026-06-21T09:42:01.5678461Z       "stages": {
2026-06-21T09:42:01.5678609Z         "doc": {
2026-06-21T09:42:01.5678776Z           "complete": false,
2026-06-21T09:42:01.5678933Z           "evidence": []
2026-06-21T09:42:01.5679147Z         },
2026-06-21T09:42:01.5679301Z         "impl": {
2026-06-21T09:42:01.5679466Z           "complete": true,
2026-06-21T09:42:01.5679630Z           "evidence": [
2026-06-21T09:42:01.5679771Z             {
2026-06-21T09:42:01.5679980Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5680140Z               "line": 978
2026-06-21T09:42:01.5680298Z             },
2026-06-21T09:42:01.5680445Z             {
2026-06-21T09:42:01.5680646Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.5680807Z               "line": 322
2026-06-21T09:42:01.5680956Z             }
2026-06-21T09:42:01.5681113Z           ]
2026-06-21T09:42:01.5681266Z         },
2026-06-21T09:42:01.5681413Z         "int": {
2026-06-21T09:42:01.5681581Z           "complete": true,
2026-06-21T09:42:01.5681742Z           "evidence": [
2026-06-21T09:42:01.5681891Z             {
2026-06-21T09:42:01.5682139Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:42:01.5682305Z               "line": 1983
2026-06-21T09:42:01.5682454Z             }
2026-06-21T09:42:01.5682624Z           ]
2026-06-21T09:42:01.5682771Z         },
2026-06-21T09:42:01.5682931Z         "unit": {
2026-06-21T09:42:01.5683088Z           "complete": true,
2026-06-21T09:42:01.5683241Z           "evidence": [
2026-06-21T09:42:01.5683403Z             {
2026-06-21T09:42:01.5683608Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5683776Z               "line": 2602
2026-06-21T09:42:01.5683927Z             },
2026-06-21T09:42:01.5684081Z             {
2026-06-21T09:42:01.5684281Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5684443Z               "line": 2666
2026-06-21T09:42:01.5684600Z             },
2026-06-21T09:42:01.5684749Z             {
2026-06-21T09:42:01.5684948Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5685106Z               "line": 2721
2026-06-21T09:42:01.5685261Z             }
2026-06-21T09:42:01.5685418Z           ]
2026-06-21T09:42:01.5685569Z         }
2026-06-21T09:42:01.5685723Z       }
2026-06-21T09:42:01.5685870Z     },
2026-06-21T09:42:01.5686028Z     {
2026-06-21T09:42:01.5686212Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-21T09:42:01.5687462Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-21T09:42:01.5687630Z       "requiredStages": [
2026-06-21T09:42:01.5687888Z         "doc",
2026-06-21T09:42:01.5688053Z         "impl",
2026-06-21T09:42:01.5688195Z         "unit"
2026-06-21T09:42:01.5688433Z       ],
2026-06-21T09:42:01.5688592Z       "stages": {
2026-06-21T09:42:01.5688739Z         "doc": {
2026-06-21T09:42:01.5688902Z           "complete": true,
2026-06-21T09:42:01.5689101Z           "evidence": [
2026-06-21T09:42:01.5689269Z             {
2026-06-21T09:42:01.5689464Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.5689626Z               "line": 374
2026-06-21T09:42:01.5689794Z             }
2026-06-21T09:42:01.5689946Z           ]
2026-06-21T09:42:01.5690113Z         },
2026-06-21T09:42:01.5690265Z         "impl": {
2026-06-21T09:42:01.5690436Z           "complete": true,
2026-06-21T09:42:01.5690596Z           "evidence": [
2026-06-21T09:42:01.5690743Z             {
2026-06-21T09:42:01.5690944Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.5691092Z               "line": 200
2026-06-21T09:42:01.5691244Z             },
2026-06-21T09:42:01.5691402Z             {
2026-06-21T09:42:01.5691592Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.5691755Z               "line": 304
2026-06-21T09:42:01.5691912Z             },
2026-06-21T09:42:01.5692070Z             {
2026-06-21T09:42:01.5692264Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.5692423Z               "line": 562
2026-06-21T09:42:01.5692579Z             },
2026-06-21T09:42:01.5692733Z             {
2026-06-21T09:42:01.5692927Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.5693081Z               "line": 577
2026-06-21T09:42:01.5693241Z             },
2026-06-21T09:42:01.5693384Z             {
2026-06-21T09:42:01.5693581Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.5693749Z               "line": 1224
2026-06-21T09:42:01.5693906Z             },
2026-06-21T09:42:01.5694054Z             {
2026-06-21T09:42:01.5694269Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.5694441Z               "line": 443
2026-06-21T09:42:01.5694598Z             },
2026-06-21T09:42:01.5694750Z             {
2026-06-21T09:42:01.5694961Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.5695122Z               "line": 590
2026-06-21T09:42:01.5695271Z             },
2026-06-21T09:42:01.5695417Z             {
2026-06-21T09:42:01.5695624Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.5695784Z               "line": 731
2026-06-21T09:42:01.5695937Z             }
2026-06-21T09:42:01.5696087Z           ]
2026-06-21T09:42:01.5696244Z         },
2026-06-21T09:42:01.5696406Z         "int": {
2026-06-21T09:42:01.5696564Z           "complete": false,
2026-06-21T09:42:01.5696730Z           "evidence": []
2026-06-21T09:42:01.5696875Z         },
2026-06-21T09:42:01.5697026Z         "unit": {
2026-06-21T09:42:01.5697184Z           "complete": true,
2026-06-21T09:42:01.5697350Z           "evidence": [
2026-06-21T09:42:01.5697504Z             {
2026-06-21T09:42:01.5697698Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.5697861Z               "line": 1155
2026-06-21T09:42:01.5698004Z             },
2026-06-21T09:42:01.5698153Z             {
2026-06-21T09:42:01.5698380Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-21T09:42:01.5698547Z               "line": 30
2026-06-21T09:42:01.5698708Z             }
2026-06-21T09:42:01.5698866Z           ]
2026-06-21T09:42:01.5699100Z         }
2026-06-21T09:42:01.5699247Z       }
2026-06-21T09:42:01.5699390Z     },
2026-06-21T09:42:01.5699543Z     {
2026-06-21T09:42:01.5699744Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-21T09:42:01.5704480Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-21T09:42:01.5704896Z       "requiredStages": [
2026-06-21T09:42:01.5705047Z         "impl",
2026-06-21T09:42:01.5705206Z         "unit",
2026-06-21T09:42:01.5705353Z         "int"
2026-06-21T09:42:01.5705512Z       ],
2026-06-21T09:42:01.5705668Z       "stages": {
2026-06-21T09:42:01.5705812Z         "doc": {
2026-06-21T09:42:01.5705992Z           "complete": false,
2026-06-21T09:42:01.5706146Z           "evidence": []
2026-06-21T09:42:01.5706311Z         },
2026-06-21T09:42:01.5706463Z         "impl": {
2026-06-21T09:42:01.5706632Z           "complete": true,
2026-06-21T09:42:01.5706800Z           "evidence": [
2026-06-21T09:42:01.5706952Z             {
2026-06-21T09:42:01.5707139Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.5707295Z               "line": 718
2026-06-21T09:42:01.5707444Z             },
2026-06-21T09:42:01.5707595Z             {
2026-06-21T09:42:01.5707778Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.5707943Z               "line": 887
2026-06-21T09:42:01.5708093Z             }
2026-06-21T09:42:01.5708249Z           ]
2026-06-21T09:42:01.5708393Z         },
2026-06-21T09:42:01.5708544Z         "int": {
2026-06-21T09:42:01.5708708Z           "complete": true,
2026-06-21T09:42:01.5708869Z           "evidence": [
2026-06-21T09:42:01.5709107Z             {
2026-06-21T09:42:01.5709316Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:42:01.5709483Z               "line": 420
2026-06-21T09:42:01.5709635Z             }
2026-06-21T09:42:01.5709789Z           ]
2026-06-21T09:42:01.5709950Z         },
2026-06-21T09:42:01.5710098Z         "unit": {
2026-06-21T09:42:01.5710274Z           "complete": true,
2026-06-21T09:42:01.5710427Z           "evidence": [
2026-06-21T09:42:01.5710585Z             {
2026-06-21T09:42:01.5710770Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.5710934Z               "line": 1072
2026-06-21T09:42:01.5711094Z             },
2026-06-21T09:42:01.5711248Z             {
2026-06-21T09:42:01.5711428Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.5711575Z               "line": 1096
2026-06-21T09:42:01.5711730Z             }
2026-06-21T09:42:01.5711873Z           ]
2026-06-21T09:42:01.5712031Z         }
2026-06-21T09:42:01.5712183Z       }
2026-06-21T09:42:01.5712336Z     },
2026-06-21T09:42:01.5712483Z     {
2026-06-21T09:42:01.5712689Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-21T09:42:01.5718276Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-21T09:42:01.5718639Z       "requiredStages": [
2026-06-21T09:42:01.5718795Z         "impl",
2026-06-21T09:42:01.5719033Z         "unit",
2026-06-21T09:42:01.5719186Z         "int"
2026-06-21T09:42:01.5719344Z       ],
2026-06-21T09:42:01.5719496Z       "stages": {
2026-06-21T09:42:01.5719649Z         "doc": {
2026-06-21T09:42:01.5719814Z           "complete": false,
2026-06-21T09:42:01.5719992Z           "evidence": []
2026-06-21T09:42:01.5720138Z         },
2026-06-21T09:42:01.5720292Z         "impl": {
2026-06-21T09:42:01.5720462Z           "complete": true,
2026-06-21T09:42:01.5720620Z           "evidence": [
2026-06-21T09:42:01.5720768Z             {
2026-06-21T09:42:01.5720954Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5721125Z               "line": 1417
2026-06-21T09:42:01.5721273Z             },
2026-06-21T09:42:01.5721421Z             {
2026-06-21T09:42:01.5721612Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5721774Z               "line": 1441
2026-06-21T09:42:01.5721931Z             }
2026-06-21T09:42:01.5722078Z           ]
2026-06-21T09:42:01.5722225Z         },
2026-06-21T09:42:01.5722385Z         "int": {
2026-06-21T09:42:01.5722544Z           "complete": true,
2026-06-21T09:42:01.5722700Z           "evidence": [
2026-06-21T09:42:01.5722839Z             {
2026-06-21T09:42:01.5723063Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T09:42:01.5723225Z               "line": 329
2026-06-21T09:42:01.5723368Z             }
2026-06-21T09:42:01.5723526Z           ]
2026-06-21T09:42:01.5723673Z         },
2026-06-21T09:42:01.5723821Z         "unit": {
2026-06-21T09:42:01.5723973Z           "complete": true,
2026-06-21T09:42:01.5724127Z           "evidence": [
2026-06-21T09:42:01.5724279Z             {
2026-06-21T09:42:01.5724456Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5724617Z               "line": 8169
2026-06-21T09:42:01.5724771Z             }
2026-06-21T09:42:01.5724916Z           ]
2026-06-21T09:42:01.5725059Z         }
2026-06-21T09:42:01.5725214Z       }
2026-06-21T09:42:01.5725367Z     },
2026-06-21T09:42:01.5725511Z     {
2026-06-21T09:42:01.5725678Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-21T09:42:01.5731439Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-21T09:42:01.5731824Z       "requiredStages": [
2026-06-21T09:42:01.5731967Z         "impl",
2026-06-21T09:42:01.5732130Z         "unit"
2026-06-21T09:42:01.5732272Z       ],
2026-06-21T09:42:01.5732431Z       "stages": {
2026-06-21T09:42:01.5732586Z         "doc": {
2026-06-21T09:42:01.5732757Z           "complete": false,
2026-06-21T09:42:01.5732917Z           "evidence": []
2026-06-21T09:42:01.5733075Z         },
2026-06-21T09:42:01.5733222Z         "impl": {
2026-06-21T09:42:01.5733380Z           "complete": true,
2026-06-21T09:42:01.5733542Z           "evidence": [
2026-06-21T09:42:01.5733691Z             {
2026-06-21T09:42:01.5733875Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.5734033Z               "line": 910
2026-06-21T09:42:01.5734190Z             }
2026-06-21T09:42:01.5734344Z           ]
2026-06-21T09:42:01.5734495Z         },
2026-06-21T09:42:01.5734645Z         "int": {
2026-06-21T09:42:01.5734810Z           "complete": false,
2026-06-21T09:42:01.5734983Z           "evidence": []
2026-06-21T09:42:01.5735125Z         },
2026-06-21T09:42:01.5735288Z         "unit": {
2026-06-21T09:42:01.5735448Z           "complete": true,
2026-06-21T09:42:01.5735610Z           "evidence": [
2026-06-21T09:42:01.5735766Z             {
2026-06-21T09:42:01.5735952Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.5736104Z               "line": 1112
2026-06-21T09:42:01.5736262Z             }
2026-06-21T09:42:01.5736409Z           ]
2026-06-21T09:42:01.5736553Z         }
2026-06-21T09:42:01.5736705Z       }
2026-06-21T09:42:01.5736863Z     },
2026-06-21T09:42:01.5737000Z     {
2026-06-21T09:42:01.5737206Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-21T09:42:01.5744012Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T09:42:01.5744217Z       "requiredStages": [
2026-06-21T09:42:01.5744378Z         "impl",
2026-06-21T09:42:01.5744527Z         "unit"
2026-06-21T09:42:01.5744679Z       ],
2026-06-21T09:42:01.5744837Z       "stages": {
2026-06-21T09:42:01.5744994Z         "doc": {
2026-06-21T09:42:01.5745161Z           "complete": false,
2026-06-21T09:42:01.5745317Z           "evidence": []
2026-06-21T09:42:01.5745476Z         },
2026-06-21T09:42:01.5745637Z         "impl": {
2026-06-21T09:42:01.5745805Z           "complete": true,
2026-06-21T09:42:01.5745961Z           "evidence": [
2026-06-21T09:42:01.5746213Z             {
2026-06-21T09:42:01.5746406Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.5746569Z               "line": 264
2026-06-21T09:42:01.5746812Z             }
2026-06-21T09:42:01.5746959Z           ]
2026-06-21T09:42:01.5747113Z         },
2026-06-21T09:42:01.5747265Z         "int": {
2026-06-21T09:42:01.5747438Z           "complete": false,
2026-06-21T09:42:01.5747594Z           "evidence": []
2026-06-21T09:42:01.5747753Z         },
2026-06-21T09:42:01.5747908Z         "unit": {
2026-06-21T09:42:01.5748072Z           "complete": true,
2026-06-21T09:42:01.5748237Z           "evidence": [
2026-06-21T09:42:01.5748387Z             {
2026-06-21T09:42:01.5748575Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.5748723Z               "line": 1094
2026-06-21T09:42:01.5748878Z             },
2026-06-21T09:42:01.5749122Z             {
2026-06-21T09:42:01.5749293Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.5749460Z               "line": 1225
2026-06-21T09:42:01.5749622Z             },
2026-06-21T09:42:01.5749774Z             {
2026-06-21T09:42:01.5749946Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.5750117Z               "line": 1227
2026-06-21T09:42:01.5750275Z             }
2026-06-21T09:42:01.5750418Z           ]
2026-06-21T09:42:01.5750566Z         }
2026-06-21T09:42:01.5750718Z       }
2026-06-21T09:42:01.5750861Z     },
2026-06-21T09:42:01.5751015Z     {
2026-06-21T09:42:01.5751210Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-21T09:42:01.5751639Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-21T09:42:01.5751809Z       "requiredStages": [
2026-06-21T09:42:01.5751968Z         "impl",
2026-06-21T09:42:01.5752114Z         "unit"
2026-06-21T09:42:01.5752273Z       ],
2026-06-21T09:42:01.5752428Z       "stages": {
2026-06-21T09:42:01.5752583Z         "doc": {
2026-06-21T09:42:01.5752748Z           "complete": true,
2026-06-21T09:42:01.5752902Z           "evidence": [
2026-06-21T09:42:01.5753054Z             {
2026-06-21T09:42:01.5753241Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.5753401Z               "line": 139
2026-06-21T09:42:01.5753551Z             }
2026-06-21T09:42:01.5753701Z           ]
2026-06-21T09:42:01.5753859Z         },
2026-06-21T09:42:01.5754004Z         "impl": {
2026-06-21T09:42:01.5754176Z           "complete": true,
2026-06-21T09:42:01.5754328Z           "evidence": [
2026-06-21T09:42:01.5754476Z             {
2026-06-21T09:42:01.5754671Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T09:42:01.5754821Z               "line": 29
2026-06-21T09:42:01.5754976Z             },
2026-06-21T09:42:01.5755130Z             {
2026-06-21T09:42:01.5755324Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T09:42:01.5755474Z               "line": 67
2026-06-21T09:42:01.5755620Z             },
2026-06-21T09:42:01.5755774Z             {
2026-06-21T09:42:01.5755983Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.5756155Z               "line": 101
2026-06-21T09:42:01.5756303Z             },
2026-06-21T09:42:01.5756456Z             {
2026-06-21T09:42:01.5756669Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5756824Z               "line": 30
2026-06-21T09:42:01.5756971Z             },
2026-06-21T09:42:01.5757130Z             {
2026-06-21T09:42:01.5757324Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5757472Z               "line": 48
2026-06-21T09:42:01.5757625Z             }
2026-06-21T09:42:01.5757778Z           ]
2026-06-21T09:42:01.5757935Z         },
2026-06-21T09:42:01.5758087Z         "int": {
2026-06-21T09:42:01.5758259Z           "complete": false,
2026-06-21T09:42:01.5758416Z           "evidence": []
2026-06-21T09:42:01.5758569Z         },
2026-06-21T09:42:01.5758726Z         "unit": {
2026-06-21T09:42:01.5758889Z           "complete": true,
2026-06-21T09:42:01.5759121Z           "evidence": [
2026-06-21T09:42:01.5759381Z             {
2026-06-21T09:42:01.5759596Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5759867Z               "line": 162
2026-06-21T09:42:01.5760025Z             }
2026-06-21T09:42:01.5760172Z           ]
2026-06-21T09:42:01.5760311Z         }
2026-06-21T09:42:01.5760467Z       }
2026-06-21T09:42:01.5760616Z     },
2026-06-21T09:42:01.5760777Z     {
2026-06-21T09:42:01.5760978Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-21T09:42:01.5761561Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-21T09:42:01.5761727Z       "requiredStages": [
2026-06-21T09:42:01.5761885Z         "doc",
2026-06-21T09:42:01.5762040Z         "impl",
2026-06-21T09:42:01.5762189Z         "unit"
2026-06-21T09:42:01.5762340Z       ],
2026-06-21T09:42:01.5762504Z       "stages": {
2026-06-21T09:42:01.5762651Z         "doc": {
2026-06-21T09:42:01.5762823Z           "complete": true,
2026-06-21T09:42:01.5762994Z           "evidence": [
2026-06-21T09:42:01.5763147Z             {
2026-06-21T09:42:01.5763337Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.5763496Z               "line": 151
2026-06-21T09:42:01.5763652Z             }
2026-06-21T09:42:01.5763805Z           ]
2026-06-21T09:42:01.5763962Z         },
2026-06-21T09:42:01.5764120Z         "impl": {
2026-06-21T09:42:01.5764300Z           "complete": true,
2026-06-21T09:42:01.5764466Z           "evidence": [
2026-06-21T09:42:01.5764612Z             {
2026-06-21T09:42:01.5764823Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5764974Z               "line": 22
2026-06-21T09:42:01.5765127Z             }
2026-06-21T09:42:01.5765279Z           ]
2026-06-21T09:42:01.5765432Z         },
2026-06-21T09:42:01.5765589Z         "int": {
2026-06-21T09:42:01.5765752Z           "complete": false,
2026-06-21T09:42:01.5765923Z           "evidence": []
2026-06-21T09:42:01.5766071Z         },
2026-06-21T09:42:01.5766238Z         "unit": {
2026-06-21T09:42:01.5766396Z           "complete": true,
2026-06-21T09:42:01.5766553Z           "evidence": [
2026-06-21T09:42:01.5766711Z             {
2026-06-21T09:42:01.5766916Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5767086Z               "line": 298
2026-06-21T09:42:01.5767234Z             }
2026-06-21T09:42:01.5767394Z           ]
2026-06-21T09:42:01.5767541Z         }
2026-06-21T09:42:01.5767695Z       }
2026-06-21T09:42:01.5767846Z     },
2026-06-21T09:42:01.5767989Z     {
2026-06-21T09:42:01.5768195Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-21T09:42:01.5768873Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-21T09:42:01.5769119Z       "requiredStages": [
2026-06-21T09:42:01.5769272Z         "impl",
2026-06-21T09:42:01.5769434Z         "unit"
2026-06-21T09:42:01.5769582Z       ],
2026-06-21T09:42:01.5769742Z       "stages": {
2026-06-21T09:42:01.5769909Z         "doc": {
2026-06-21T09:42:01.5770074Z           "complete": true,
2026-06-21T09:42:01.5770242Z           "evidence": [
2026-06-21T09:42:01.5770393Z             {
2026-06-21T09:42:01.5770590Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.5770742Z               "line": 145
2026-06-21T09:42:01.5770895Z             }
2026-06-21T09:42:01.5771047Z           ]
2026-06-21T09:42:01.5771195Z         },
2026-06-21T09:42:01.5771347Z         "impl": {
2026-06-21T09:42:01.5771510Z           "complete": true,
2026-06-21T09:42:01.5771676Z           "evidence": [
2026-06-21T09:42:01.5771824Z             {
2026-06-21T09:42:01.5772045Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T09:42:01.5772210Z               "line": 160
2026-06-21T09:42:01.5772359Z             },
2026-06-21T09:42:01.5772510Z             {
2026-06-21T09:42:01.5772730Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.5772901Z               "line": 200
2026-06-21T09:42:01.5773168Z             },
2026-06-21T09:42:01.5773311Z             {
2026-06-21T09:42:01.5773621Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.5773774Z               "line": 298
2026-06-21T09:42:01.5773926Z             },
2026-06-21T09:42:01.5774070Z             {
2026-06-21T09:42:01.5774280Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T09:42:01.5774450Z               "line": 20
2026-06-21T09:42:01.5774604Z             }
2026-06-21T09:42:01.5774746Z           ]
2026-06-21T09:42:01.5774897Z         },
2026-06-21T09:42:01.5775054Z         "int": {
2026-06-21T09:42:01.5775205Z           "complete": false,
2026-06-21T09:42:01.5775374Z           "evidence": []
2026-06-21T09:42:01.5775530Z         },
2026-06-21T09:42:01.5775682Z         "unit": {
2026-06-21T09:42:01.5775849Z           "complete": true,
2026-06-21T09:42:01.5776002Z           "evidence": [
2026-06-21T09:42:01.5776164Z             {
2026-06-21T09:42:01.5776379Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.5776532Z               "line": 937
2026-06-21T09:42:01.5776689Z             },
2026-06-21T09:42:01.5776842Z             {
2026-06-21T09:42:01.5777065Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T09:42:01.5777223Z               "line": 88
2026-06-21T09:42:01.5777380Z             },
2026-06-21T09:42:01.5777534Z             {
2026-06-21T09:42:01.5777750Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.5777912Z               "line": 851
2026-06-21T09:42:01.5778068Z             },
2026-06-21T09:42:01.5778226Z             {
2026-06-21T09:42:01.5778430Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.5778598Z               "line": 870
2026-06-21T09:42:01.5778750Z             },
2026-06-21T09:42:01.5778913Z             {
2026-06-21T09:42:01.5779203Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:42:01.5779369Z               "line": 279
2026-06-21T09:42:01.5779522Z             },
2026-06-21T09:42:01.5779670Z             {
2026-06-21T09:42:01.5779874Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T09:42:01.5780034Z               "line": 82
2026-06-21T09:42:01.5780175Z             },
2026-06-21T09:42:01.5780326Z             {
2026-06-21T09:42:01.5780530Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T09:42:01.5780701Z               "line": 99
2026-06-21T09:42:01.5780854Z             },
2026-06-21T09:42:01.5781011Z             {
2026-06-21T09:42:01.5781206Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T09:42:01.5781365Z               "line": 119
2026-06-21T09:42:01.5781521Z             }
2026-06-21T09:42:01.5781670Z           ]
2026-06-21T09:42:01.5781822Z         }
2026-06-21T09:42:01.5781970Z       }
2026-06-21T09:42:01.5782132Z     },
2026-06-21T09:42:01.5782285Z     {
2026-06-21T09:42:01.5782489Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-21T09:42:01.5784448Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-21T09:42:01.5784616Z       "requiredStages": [
2026-06-21T09:42:01.5784782Z         "doc",
2026-06-21T09:42:01.5784935Z         "impl",
2026-06-21T09:42:01.5785096Z         "unit"
2026-06-21T09:42:01.5785245Z       ],
2026-06-21T09:42:01.5785391Z       "stages": {
2026-06-21T09:42:01.5785553Z         "doc": {
2026-06-21T09:42:01.5785718Z           "complete": true,
2026-06-21T09:42:01.5785886Z           "evidence": [
2026-06-21T09:42:01.5786037Z             {
2026-06-21T09:42:01.5786229Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.5786496Z               "line": 157
2026-06-21T09:42:01.5786652Z             }
2026-06-21T09:42:01.5786806Z           ]
2026-06-21T09:42:01.5787058Z         },
2026-06-21T09:42:01.5787215Z         "impl": {
2026-06-21T09:42:01.5787378Z           "complete": true,
2026-06-21T09:42:01.5787535Z           "evidence": [
2026-06-21T09:42:01.5787688Z             {
2026-06-21T09:42:01.5787911Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:42:01.5788075Z               "line": 137
2026-06-21T09:42:01.5788230Z             },
2026-06-21T09:42:01.5788387Z             {
2026-06-21T09:42:01.5788599Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.5788763Z               "line": 564
2026-06-21T09:42:01.5788918Z             },
2026-06-21T09:42:01.5789167Z             {
2026-06-21T09:42:01.5789397Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.5789557Z               "line": 571
2026-06-21T09:42:01.5789711Z             },
2026-06-21T09:42:01.5789867Z             {
2026-06-21T09:42:01.5790073Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.5790235Z               "line": 227
2026-06-21T09:42:01.5790388Z             }
2026-06-21T09:42:01.5790540Z           ]
2026-06-21T09:42:01.5790689Z         },
2026-06-21T09:42:01.5790844Z         "int": {
2026-06-21T09:42:01.5791025Z           "complete": false,
2026-06-21T09:42:01.5791190Z           "evidence": []
2026-06-21T09:42:01.5791348Z         },
2026-06-21T09:42:01.5791504Z         "unit": {
2026-06-21T09:42:01.5791676Z           "complete": true,
2026-06-21T09:42:01.5791838Z           "evidence": [
2026-06-21T09:42:01.5791991Z             {
2026-06-21T09:42:01.5792216Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.5792378Z               "line": 1622
2026-06-21T09:42:01.5792535Z             },
2026-06-21T09:42:01.5792683Z             {
2026-06-21T09:42:01.5792908Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.5793059Z               "line": 1680
2026-06-21T09:42:01.5793223Z             },
2026-06-21T09:42:01.5793374Z             {
2026-06-21T09:42:01.5793584Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.5793739Z               "line": 883
2026-06-21T09:42:01.5793893Z             }
2026-06-21T09:42:01.5794040Z           ]
2026-06-21T09:42:01.5794193Z         }
2026-06-21T09:42:01.5794345Z       }
2026-06-21T09:42:01.5794504Z     },
2026-06-21T09:42:01.5794655Z     {
2026-06-21T09:42:01.5794861Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-21T09:42:01.5795185Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-21T09:42:01.5795347Z       "requiredStages": [
2026-06-21T09:42:01.5795495Z         "impl",
2026-06-21T09:42:01.5795652Z         "unit"
2026-06-21T09:42:01.5795810Z       ],
2026-06-21T09:42:01.5795970Z       "stages": {
2026-06-21T09:42:01.5796127Z         "doc": {
2026-06-21T09:42:01.5796296Z           "complete": false,
2026-06-21T09:42:01.5796460Z           "evidence": []
2026-06-21T09:42:01.5796616Z         },
2026-06-21T09:42:01.5796775Z         "impl": {
2026-06-21T09:42:01.5796945Z           "complete": true,
2026-06-21T09:42:01.5797103Z           "evidence": [
2026-06-21T09:42:01.5797264Z             {
2026-06-21T09:42:01.5797466Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:42:01.5797623Z               "line": 15
2026-06-21T09:42:01.5797775Z             },
2026-06-21T09:42:01.5797918Z             {
2026-06-21T09:42:01.5798128Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5798277Z               "line": 55
2026-06-21T09:42:01.5798438Z             },
2026-06-21T09:42:01.5798582Z             {
2026-06-21T09:42:01.5798795Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5799027Z               "line": 66
2026-06-21T09:42:01.5799178Z             },
2026-06-21T09:42:01.5799327Z             {
2026-06-21T09:42:01.5799642Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5799807Z               "line": 115
2026-06-21T09:42:01.5800047Z             },
2026-06-21T09:42:01.5800204Z             {
2026-06-21T09:42:01.5800409Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5800562Z               "line": 138
2026-06-21T09:42:01.5800714Z             }
2026-06-21T09:42:01.5800863Z           ]
2026-06-21T09:42:01.5801023Z         },
2026-06-21T09:42:01.5801168Z         "int": {
2026-06-21T09:42:01.5801352Z           "complete": false,
2026-06-21T09:42:01.5801519Z           "evidence": []
2026-06-21T09:42:01.5801664Z         },
2026-06-21T09:42:01.5801822Z         "unit": {
2026-06-21T09:42:01.5801989Z           "complete": true,
2026-06-21T09:42:01.5802146Z           "evidence": [
2026-06-21T09:42:01.5802299Z             {
2026-06-21T09:42:01.5802495Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:42:01.5802660Z               "line": 363
2026-06-21T09:42:01.5802809Z             },
2026-06-21T09:42:01.5802966Z             {
2026-06-21T09:42:01.5803153Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:42:01.5803314Z               "line": 369
2026-06-21T09:42:01.5803468Z             },
2026-06-21T09:42:01.5803624Z             {
2026-06-21T09:42:01.5803825Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:42:01.5803977Z               "line": 383
2026-06-21T09:42:01.5804131Z             },
2026-06-21T09:42:01.5804281Z             {
2026-06-21T09:42:01.5804473Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:42:01.5804633Z               "line": 392
2026-06-21T09:42:01.5804796Z             },
2026-06-21T09:42:01.5804953Z             {
2026-06-21T09:42:01.5805154Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5805306Z               "line": 195
2026-06-21T09:42:01.5805463Z             },
2026-06-21T09:42:01.5805616Z             {
2026-06-21T09:42:01.5805821Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5805989Z               "line": 208
2026-06-21T09:42:01.5806150Z             },
2026-06-21T09:42:01.5806294Z             {
2026-06-21T09:42:01.5806498Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5806660Z               "line": 271
2026-06-21T09:42:01.5806810Z             },
2026-06-21T09:42:01.5806953Z             {
2026-06-21T09:42:01.5807162Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5810583Z               "line": 290
2026-06-21T09:42:01.5810779Z             },
2026-06-21T09:42:01.5810941Z             {
2026-06-21T09:42:01.5811165Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.5811336Z               "line": 319
2026-06-21T09:42:01.5811494Z             }
2026-06-21T09:42:01.5811641Z           ]
2026-06-21T09:42:01.5811795Z         }
2026-06-21T09:42:01.5811945Z       }
2026-06-21T09:42:01.5812102Z     },
2026-06-21T09:42:01.5812253Z     {
2026-06-21T09:42:01.5812463Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-21T09:42:01.5812901Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-21T09:42:01.5813083Z       "requiredStages": [
2026-06-21T09:42:01.5813239Z         "impl",
2026-06-21T09:42:01.5813393Z         "unit",
2026-06-21T09:42:01.5813554Z         "int"
2026-06-21T09:42:01.5813713Z       ],
2026-06-21T09:42:01.5813869Z       "stages": {
2026-06-21T09:42:01.5814023Z         "doc": {
2026-06-21T09:42:01.5814184Z           "complete": false,
2026-06-21T09:42:01.5814348Z           "evidence": []
2026-06-21T09:42:01.5814494Z         },
2026-06-21T09:42:01.5814648Z         "impl": {
2026-06-21T09:42:01.5814812Z           "complete": true,
2026-06-21T09:42:01.5814970Z           "evidence": [
2026-06-21T09:42:01.5815113Z             {
2026-06-21T09:42:01.5815319Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.5815484Z               "line": 474
2026-06-21T09:42:01.5815799Z             },
2026-06-21T09:42:01.5815948Z             {
2026-06-21T09:42:01.5816162Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.5816429Z               "line": 916
2026-06-21T09:42:01.5816578Z             },
2026-06-21T09:42:01.5816743Z             {
2026-06-21T09:42:01.5816949Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.5817100Z               "line": 961
2026-06-21T09:42:01.5817257Z             },
2026-06-21T09:42:01.5817408Z             {
2026-06-21T09:42:01.5817619Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.5817780Z               "line": 986
2026-06-21T09:42:01.5817928Z             },
2026-06-21T09:42:01.5818079Z             {
2026-06-21T09:42:01.5818286Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5818453Z               "line": 1800
2026-06-21T09:42:01.5818610Z             },
2026-06-21T09:42:01.5818763Z             {
2026-06-21T09:42:01.5819053Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5819220Z               "line": 2045
2026-06-21T09:42:01.5819383Z             },
2026-06-21T09:42:01.5819539Z             {
2026-06-21T09:42:01.5819741Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5819901Z               "line": 2176
2026-06-21T09:42:01.5820053Z             },
2026-06-21T09:42:01.5820194Z             {
2026-06-21T09:42:01.5820404Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.5820570Z               "line": 2224
2026-06-21T09:42:01.5820720Z             },
2026-06-21T09:42:01.5820885Z             {
2026-06-21T09:42:01.5821072Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:42:01.5821228Z               "line": 46
2026-06-21T09:42:01.5821387Z             },
2026-06-21T09:42:01.5821539Z             {
2026-06-21T09:42:01.5821739Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:42:01.5821891Z               "line": 200
2026-06-21T09:42:01.5822045Z             },
2026-06-21T09:42:01.5822197Z             {
2026-06-21T09:42:01.5822397Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:42:01.5822567Z               "line": 132
2026-06-21T09:42:01.5822714Z             },
2026-06-21T09:42:01.5822875Z             {
2026-06-21T09:42:01.5823067Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5823232Z               "line": 137
2026-06-21T09:42:01.5823381Z             },
2026-06-21T09:42:01.5823538Z             {
2026-06-21T09:42:01.5823743Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5823906Z               "line": 183
2026-06-21T09:42:01.5824058Z             }
2026-06-21T09:42:01.5824201Z           ]
2026-06-21T09:42:01.5824353Z         },
2026-06-21T09:42:01.5824501Z         "int": {
2026-06-21T09:42:01.5824677Z           "complete": true,
2026-06-21T09:42:01.5824831Z           "evidence": [
2026-06-21T09:42:01.5824982Z             {
2026-06-21T09:42:01.5825203Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-21T09:42:01.5825363Z               "line": 27
2026-06-21T09:42:01.5825525Z             },
2026-06-21T09:42:01.5825683Z             {
2026-06-21T09:42:01.5825898Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T09:42:01.5826064Z               "line": 148
2026-06-21T09:42:01.5826213Z             },
2026-06-21T09:42:01.5826359Z             {
2026-06-21T09:42:01.5826574Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T09:42:01.5826741Z               "line": 200
2026-06-21T09:42:01.5826898Z             }
2026-06-21T09:42:01.5827047Z           ]
2026-06-21T09:42:01.5827204Z         },
2026-06-21T09:42:01.5827347Z         "unit": {
2026-06-21T09:42:01.5827514Z           "complete": true,
2026-06-21T09:42:01.5827670Z           "evidence": [
2026-06-21T09:42:01.5827827Z             {
2026-06-21T09:42:01.5828035Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:42:01.5828174Z               "line": 366
2026-06-21T09:42:01.5828441Z             },
2026-06-21T09:42:01.5828592Z             {
2026-06-21T09:42:01.5828897Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:42:01.5829189Z               "line": 398
2026-06-21T09:42:01.5829352Z             },
2026-06-21T09:42:01.5829513Z             {
2026-06-21T09:42:01.5829710Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:42:01.5829875Z               "line": 419
2026-06-21T09:42:01.5830029Z             },
2026-06-21T09:42:01.5830219Z             {
2026-06-21T09:42:01.5830423Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.5830580Z               "line": 628
2026-06-21T09:42:01.5830741Z             },
2026-06-21T09:42:01.5830897Z             {
2026-06-21T09:42:01.5831097Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T09:42:01.5831250Z               "line": 289
2026-06-21T09:42:01.5831407Z             },
2026-06-21T09:42:01.5831560Z             {
2026-06-21T09:42:01.5831764Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T09:42:01.5831933Z               "line": 230
2026-06-21T09:42:01.5832075Z             },
2026-06-21T09:42:01.5832224Z             {
2026-06-21T09:42:01.5832423Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5832582Z               "line": 526
2026-06-21T09:42:01.5832733Z             },
2026-06-21T09:42:01.5832892Z             {
2026-06-21T09:42:01.5833084Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.5833246Z               "line": 556
2026-06-21T09:42:01.5833392Z             }
2026-06-21T09:42:01.5833550Z           ]
2026-06-21T09:42:01.5833707Z         }
2026-06-21T09:42:01.5833855Z       }
2026-06-21T09:42:01.5834017Z     },
2026-06-21T09:42:01.5834170Z     {
2026-06-21T09:42:01.5834379Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-21T09:42:01.5836933Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-21T09:42:01.5837111Z       "requiredStages": [
2026-06-21T09:42:01.5837268Z         "doc",
2026-06-21T09:42:01.5837426Z         "impl",
2026-06-21T09:42:01.5837568Z         "unit"
2026-06-21T09:42:01.5837726Z       ],
2026-06-21T09:42:01.5837883Z       "stages": {
2026-06-21T09:42:01.5838037Z         "doc": {
2026-06-21T09:42:01.5838206Z           "complete": true,
2026-06-21T09:42:01.5838368Z           "evidence": [
2026-06-21T09:42:01.5838528Z             {
2026-06-21T09:42:01.5838720Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.5838890Z               "line": 314
2026-06-21T09:42:01.5839115Z             }
2026-06-21T09:42:01.5839273Z           ]
2026-06-21T09:42:01.5839439Z         },
2026-06-21T09:42:01.5839583Z         "impl": {
2026-06-21T09:42:01.5839759Z           "complete": true,
2026-06-21T09:42:01.5839916Z           "evidence": [
2026-06-21T09:42:01.5840064Z             {
2026-06-21T09:42:01.5840303Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T09:42:01.5840459Z               "line": 33
2026-06-21T09:42:01.5840613Z             },
2026-06-21T09:42:01.5840755Z             {
2026-06-21T09:42:01.5840988Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T09:42:01.5841150Z               "line": 39
2026-06-21T09:42:01.5841310Z             }
2026-06-21T09:42:01.5841462Z           ]
2026-06-21T09:42:01.5841621Z         },
2026-06-21T09:42:01.5841781Z         "int": {
2026-06-21T09:42:01.5841935Z           "complete": false,
2026-06-21T09:42:01.5842106Z           "evidence": []
2026-06-21T09:42:01.5842372Z         },
2026-06-21T09:42:01.5842521Z         "unit": {
2026-06-21T09:42:01.5842784Z           "complete": true,
2026-06-21T09:42:01.5842950Z           "evidence": [
2026-06-21T09:42:01.5843103Z             {
2026-06-21T09:42:01.5843317Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T09:42:01.5843471Z               "line": 95
2026-06-21T09:42:01.5843626Z             }
2026-06-21T09:42:01.5843774Z           ]
2026-06-21T09:42:01.5843929Z         }
2026-06-21T09:42:01.5844082Z       }
2026-06-21T09:42:01.5844239Z     },
2026-06-21T09:42:01.5844387Z     {
2026-06-21T09:42:01.5844572Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-21T09:42:01.5848177Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-21T09:42:01.5848362Z       "requiredStages": [
2026-06-21T09:42:01.5848525Z         "impl",
2026-06-21T09:42:01.5848672Z         "unit"
2026-06-21T09:42:01.5848828Z       ],
2026-06-21T09:42:01.5849059Z       "stages": {
2026-06-21T09:42:01.5849217Z         "doc": {
2026-06-21T09:42:01.5849388Z           "complete": false,
2026-06-21T09:42:01.5849557Z           "evidence": []
2026-06-21T09:42:01.5849708Z         },
2026-06-21T09:42:01.5849866Z         "impl": {
2026-06-21T09:42:01.5850041Z           "complete": true,
2026-06-21T09:42:01.5850191Z           "evidence": [
2026-06-21T09:42:01.5850356Z             {
2026-06-21T09:42:01.5850590Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.5850758Z               "line": 488
2026-06-21T09:42:01.5850910Z             }
2026-06-21T09:42:01.5851058Z           ]
2026-06-21T09:42:01.5851220Z         },
2026-06-21T09:42:01.5851373Z         "int": {
2026-06-21T09:42:01.5851544Z           "complete": false,
2026-06-21T09:42:01.5851710Z           "evidence": []
2026-06-21T09:42:01.5851852Z         },
2026-06-21T09:42:01.5852007Z         "unit": {
2026-06-21T09:42:01.5852171Z           "complete": true,
2026-06-21T09:42:01.5852336Z           "evidence": [
2026-06-21T09:42:01.5852490Z             {
2026-06-21T09:42:01.5852714Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.5852880Z               "line": 1466
2026-06-21T09:42:01.5853024Z             }
2026-06-21T09:42:01.5853186Z           ]
2026-06-21T09:42:01.5853339Z         }
2026-06-21T09:42:01.5853500Z       }
2026-06-21T09:42:01.5853649Z     },
2026-06-21T09:42:01.5853810Z     {
2026-06-21T09:42:01.5854002Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-21T09:42:01.5857211Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-21T09:42:01.5857506Z       "requiredStages": [
2026-06-21T09:42:01.5857663Z         "unit"
2026-06-21T09:42:01.5857807Z       ],
2026-06-21T09:42:01.5858059Z       "stages": {
2026-06-21T09:42:01.5858212Z         "doc": {
2026-06-21T09:42:01.5858383Z           "complete": false,
2026-06-21T09:42:01.5858541Z           "evidence": []
2026-06-21T09:42:01.5858703Z         },
2026-06-21T09:42:01.5858856Z         "impl": {
2026-06-21T09:42:01.5859110Z           "complete": true,
2026-06-21T09:42:01.5859270Z           "evidence": [
2026-06-21T09:42:01.5859422Z             {
2026-06-21T09:42:01.5859615Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5859777Z               "line": 3520
2026-06-21T09:42:01.5859962Z             },
2026-06-21T09:42:01.5860121Z             {
2026-06-21T09:42:01.5860306Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5860474Z               "line": 3572
2026-06-21T09:42:01.5860630Z             },
2026-06-21T09:42:01.5860784Z             {
2026-06-21T09:42:01.5860960Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5861117Z               "line": 3617
2026-06-21T09:42:01.5861274Z             },
2026-06-21T09:42:01.5861432Z             {
2026-06-21T09:42:01.5861638Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5861794Z               "line": 92
2026-06-21T09:42:01.5861952Z             },
2026-06-21T09:42:01.5862118Z             {
2026-06-21T09:42:01.5862318Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5862482Z               "line": 148
2026-06-21T09:42:01.5862644Z             },
2026-06-21T09:42:01.5862788Z             {
2026-06-21T09:42:01.5862984Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5863149Z               "line": 192
2026-06-21T09:42:01.5863298Z             },
2026-06-21T09:42:01.5863450Z             {
2026-06-21T09:42:01.5863642Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5863807Z               "line": 200
2026-06-21T09:42:01.5863971Z             },
2026-06-21T09:42:01.5864122Z             {
2026-06-21T09:42:01.5864323Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5864490Z               "line": 211
2026-06-21T09:42:01.5864648Z             },
2026-06-21T09:42:01.5864803Z             {
2026-06-21T09:42:01.5864997Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5865149Z               "line": 265
2026-06-21T09:42:01.5865298Z             },
2026-06-21T09:42:01.5865449Z             {
2026-06-21T09:42:01.5865641Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5865798Z               "line": 279
2026-06-21T09:42:01.5865956Z             }
2026-06-21T09:42:01.5866108Z           ]
2026-06-21T09:42:01.5866255Z         },
2026-06-21T09:42:01.5866398Z         "int": {
2026-06-21T09:42:01.5866570Z           "complete": false,
2026-06-21T09:42:01.5866742Z           "evidence": []
2026-06-21T09:42:01.5866894Z         },
2026-06-21T09:42:01.5867057Z         "unit": {
2026-06-21T09:42:01.5867232Z           "complete": true,
2026-06-21T09:42:01.5867392Z           "evidence": [
2026-06-21T09:42:01.5867552Z             {
2026-06-21T09:42:01.5867752Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5867918Z               "line": 419
2026-06-21T09:42:01.5868066Z             },
2026-06-21T09:42:01.5868223Z             {
2026-06-21T09:42:01.5868416Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5868581Z               "line": 470
2026-06-21T09:42:01.5868740Z             },
2026-06-21T09:42:01.5868895Z             {
2026-06-21T09:42:01.5869182Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5869341Z               "line": 499
2026-06-21T09:42:01.5869506Z             },
2026-06-21T09:42:01.5869660Z             {
2026-06-21T09:42:01.5869854Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5870006Z               "line": 526
2026-06-21T09:42:01.5870161Z             }
2026-06-21T09:42:01.5870466Z           ]
2026-06-21T09:42:01.5870609Z         }
2026-06-21T09:42:01.5870762Z       }
2026-06-21T09:42:01.5871006Z     },
2026-06-21T09:42:01.5871157Z     {
2026-06-21T09:42:01.5871358Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-21T09:42:01.5871682Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-21T09:42:01.5871849Z       "requiredStages": [
2026-06-21T09:42:01.5872011Z         "impl",
2026-06-21T09:42:01.5872164Z         "unit"
2026-06-21T09:42:01.5872312Z       ],
2026-06-21T09:42:01.5872474Z       "stages": {
2026-06-21T09:42:01.5872631Z         "doc": {
2026-06-21T09:42:01.5872806Z           "complete": false,
2026-06-21T09:42:01.5872972Z           "evidence": []
2026-06-21T09:42:01.5873123Z         },
2026-06-21T09:42:01.5873291Z         "impl": {
2026-06-21T09:42:01.5873452Z           "complete": true,
2026-06-21T09:42:01.5873620Z           "evidence": [
2026-06-21T09:42:01.5873767Z             {
2026-06-21T09:42:01.5873991Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.5874150Z               "line": 62
2026-06-21T09:42:01.5874311Z             },
2026-06-21T09:42:01.5874469Z             {
2026-06-21T09:42:01.5874687Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.5874860Z               "line": 71
2026-06-21T09:42:01.5875016Z             },
2026-06-21T09:42:01.5875198Z             {
2026-06-21T09:42:01.5875421Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.5875581Z               "line": 80
2026-06-21T09:42:01.5875733Z             },
2026-06-21T09:42:01.5875882Z             {
2026-06-21T09:42:01.5876106Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.5876266Z               "line": 88
2026-06-21T09:42:01.5876430Z             },
2026-06-21T09:42:01.5876577Z             {
2026-06-21T09:42:01.5876773Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5876934Z               "line": 33
2026-06-21T09:42:01.5877112Z             },
2026-06-21T09:42:01.5877273Z             {
2026-06-21T09:42:01.5877478Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5877651Z               "line": 65
2026-06-21T09:42:01.5877811Z             },
2026-06-21T09:42:01.5877961Z             {
2026-06-21T09:42:01.5878159Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5878321Z               "line": 74
2026-06-21T09:42:01.5878478Z             },
2026-06-21T09:42:01.5878626Z             {
2026-06-21T09:42:01.5878826Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5879056Z               "line": 93
2026-06-21T09:42:01.5879213Z             },
2026-06-21T09:42:01.5879370Z             {
2026-06-21T09:42:01.5879576Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5879738Z               "line": 102
2026-06-21T09:42:01.5879882Z             },
2026-06-21T09:42:01.5880037Z             {
2026-06-21T09:42:01.5880235Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5880395Z               "line": 111
2026-06-21T09:42:01.5880537Z             },
2026-06-21T09:42:01.5880702Z             {
2026-06-21T09:42:01.5880898Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5881064Z               "line": 122
2026-06-21T09:42:01.5881208Z             },
2026-06-21T09:42:01.5881360Z             {
2026-06-21T09:42:01.5881561Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5881732Z               "line": 140
2026-06-21T09:42:01.5881885Z             },
2026-06-21T09:42:01.5882042Z             {
2026-06-21T09:42:01.5882247Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5882399Z               "line": 149
2026-06-21T09:42:01.5882561Z             },
2026-06-21T09:42:01.5882709Z             {
2026-06-21T09:42:01.5882900Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5883059Z               "line": 158
2026-06-21T09:42:01.5883328Z             },
2026-06-21T09:42:01.5883476Z             {
2026-06-21T09:42:01.5883678Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5883931Z               "line": 169
2026-06-21T09:42:01.5884085Z             },
2026-06-21T09:42:01.5884246Z             {
2026-06-21T09:42:01.5884447Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5884613Z               "line": 177
2026-06-21T09:42:01.5884771Z             },
2026-06-21T09:42:01.5884919Z             {
2026-06-21T09:42:01.5885119Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5885271Z               "line": 186
2026-06-21T09:42:01.5885429Z             },
2026-06-21T09:42:01.5885576Z             {
2026-06-21T09:42:01.5885782Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5885942Z               "line": 195
2026-06-21T09:42:01.5886094Z             },
2026-06-21T09:42:01.5886250Z             {
2026-06-21T09:42:01.5886446Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5886623Z               "line": 204
2026-06-21T09:42:01.5886771Z             },
2026-06-21T09:42:01.5886933Z             {
2026-06-21T09:42:01.5887142Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5887319Z               "line": 216
2026-06-21T09:42:01.5887480Z             },
2026-06-21T09:42:01.5887629Z             {
2026-06-21T09:42:01.5887838Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5888000Z               "line": 223
2026-06-21T09:42:01.5888153Z             },
2026-06-21T09:42:01.5888311Z             {
2026-06-21T09:42:01.5888507Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5888663Z               "line": 232
2026-06-21T09:42:01.5888814Z             },
2026-06-21T09:42:01.5889043Z             {
2026-06-21T09:42:01.5889254Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5889410Z               "line": 239
2026-06-21T09:42:01.5889578Z             },
2026-06-21T09:42:01.5889734Z             {
2026-06-21T09:42:01.5889940Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5890097Z               "line": 306
2026-06-21T09:42:01.5890250Z             },
2026-06-21T09:42:01.5890403Z             {
2026-06-21T09:42:01.5890597Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5890766Z               "line": 318
2026-06-21T09:42:01.5890917Z             },
2026-06-21T09:42:01.5891074Z             {
2026-06-21T09:42:01.5891267Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5891434Z               "line": 405
2026-06-21T09:42:01.5891596Z             }
2026-06-21T09:42:01.5891749Z           ]
2026-06-21T09:42:01.5891901Z         },
2026-06-21T09:42:01.5892054Z         "int": {
2026-06-21T09:42:01.5892230Z           "complete": false,
2026-06-21T09:42:01.5892384Z           "evidence": []
2026-06-21T09:42:01.5892545Z         },
2026-06-21T09:42:01.5892698Z         "unit": {
2026-06-21T09:42:01.5892864Z           "complete": true,
2026-06-21T09:42:01.5893032Z           "evidence": [
2026-06-21T09:42:01.5893189Z             {
2026-06-21T09:42:01.5893399Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5893565Z               "line": 487
2026-06-21T09:42:01.5893710Z             },
2026-06-21T09:42:01.5893870Z             {
2026-06-21T09:42:01.5894069Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5894229Z               "line": 528
2026-06-21T09:42:01.5894378Z             },
2026-06-21T09:42:01.5894534Z             {
2026-06-21T09:42:01.5894731Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5894897Z               "line": 541
2026-06-21T09:42:01.5895060Z             },
2026-06-21T09:42:01.5895207Z             {
2026-06-21T09:42:01.5895412Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.5895575Z               "line": 627
2026-06-21T09:42:01.5895722Z             }
2026-06-21T09:42:01.5895980Z           ]
2026-06-21T09:42:01.5896141Z         }
2026-06-21T09:42:01.5896295Z       }
2026-06-21T09:42:01.5896560Z     },
2026-06-21T09:42:01.5896720Z     {
2026-06-21T09:42:01.5896906Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-21T09:42:01.5897236Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-21T09:42:01.5897401Z       "requiredStages": [
2026-06-21T09:42:01.5897564Z         "impl",
2026-06-21T09:42:01.5897721Z         "unit"
2026-06-21T09:42:01.5897879Z       ],
2026-06-21T09:42:01.5898040Z       "stages": {
2026-06-21T09:42:01.5898189Z         "doc": {
2026-06-21T09:42:01.5898355Z           "complete": false,
2026-06-21T09:42:01.5898528Z           "evidence": []
2026-06-21T09:42:01.5898680Z         },
2026-06-21T09:42:01.5898843Z         "impl": {
2026-06-21T09:42:01.5899081Z           "complete": true,
2026-06-21T09:42:01.5899246Z           "evidence": [
2026-06-21T09:42:01.5899398Z             {
2026-06-21T09:42:01.5899636Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:42:01.5899805Z               "line": 175
2026-06-21T09:42:01.5899956Z             },
2026-06-21T09:42:01.5900120Z             {
2026-06-21T09:42:01.5900319Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.5900481Z               "line": 171
2026-06-21T09:42:01.5900629Z             }
2026-06-21T09:42:01.5900782Z           ]
2026-06-21T09:42:01.5900934Z         },
2026-06-21T09:42:01.5901097Z         "int": {
2026-06-21T09:42:01.5901273Z           "complete": false,
2026-06-21T09:42:01.5901436Z           "evidence": []
2026-06-21T09:42:01.5901591Z         },
2026-06-21T09:42:01.5901739Z         "unit": {
2026-06-21T09:42:01.5901908Z           "complete": true,
2026-06-21T09:42:01.5902071Z           "evidence": [
2026-06-21T09:42:01.5902223Z             {
2026-06-21T09:42:01.5902424Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:42:01.5902580Z               "line": 297
2026-06-21T09:42:01.5902738Z             },
2026-06-21T09:42:01.5902895Z             {
2026-06-21T09:42:01.5903105Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.5903263Z               "line": 836
2026-06-21T09:42:01.5903416Z             },
2026-06-21T09:42:01.5903578Z             {
2026-06-21T09:42:01.5903786Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.5903960Z               "line": 849
2026-06-21T09:42:01.5904116Z             }
2026-06-21T09:42:01.5904275Z           ]
2026-06-21T09:42:01.5904425Z         }
2026-06-21T09:42:01.5904587Z       }
2026-06-21T09:42:01.5904746Z     },
2026-06-21T09:42:01.5904890Z     {
2026-06-21T09:42:01.5905090Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-21T09:42:01.5905319Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-21T09:42:01.5905501Z       "requiredStages": [
2026-06-21T09:42:01.5905657Z         "impl",
2026-06-21T09:42:01.5905820Z         "unit"
2026-06-21T09:42:01.5905977Z       ],
2026-06-21T09:42:01.5906130Z       "stages": {
2026-06-21T09:42:01.5906296Z         "doc": {
2026-06-21T09:42:01.5906469Z           "complete": false,
2026-06-21T09:42:01.5906673Z           "evidence": []
2026-06-21T09:42:01.5906827Z         },
2026-06-21T09:42:01.5906991Z         "impl": {
2026-06-21T09:42:01.5907158Z           "complete": true,
2026-06-21T09:42:01.5907318Z           "evidence": [
2026-06-21T09:42:01.5907481Z             {
2026-06-21T09:42:01.5907685Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.5907862Z               "line": 116
2026-06-21T09:42:01.5908019Z             },
2026-06-21T09:42:01.5908177Z             {
2026-06-21T09:42:01.5908397Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.5908553Z               "line": 507
2026-06-21T09:42:01.5908712Z             }
2026-06-21T09:42:01.5908863Z           ]
2026-06-21T09:42:01.5909092Z         },
2026-06-21T09:42:01.5909245Z         "int": {
2026-06-21T09:42:01.5909417Z           "complete": false,
2026-06-21T09:42:01.5909703Z           "evidence": []
2026-06-21T09:42:01.5909859Z         },
2026-06-21T09:42:01.5910011Z         "unit": {
2026-06-21T09:42:01.5910293Z           "complete": true,
2026-06-21T09:42:01.5910460Z           "evidence": [
2026-06-21T09:42:01.5910608Z             {
2026-06-21T09:42:01.5910836Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.5910999Z               "line": 541
2026-06-21T09:42:01.5911146Z             }
2026-06-21T09:42:01.5911290Z           ]
2026-06-21T09:42:01.5911442Z         }
2026-06-21T09:42:01.5911600Z       }
2026-06-21T09:42:01.5911751Z     },
2026-06-21T09:42:01.5911906Z     {
2026-06-21T09:42:01.5912123Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-21T09:42:01.5912387Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-21T09:42:01.5912568Z       "requiredStages": [
2026-06-21T09:42:01.5912726Z         "impl",
2026-06-21T09:42:01.5912883Z         "unit"
2026-06-21T09:42:01.5913031Z       ],
2026-06-21T09:42:01.5913208Z       "stages": {
2026-06-21T09:42:01.5913369Z         "doc": {
2026-06-21T09:42:01.5913528Z           "complete": false,
2026-06-21T09:42:01.5913717Z           "evidence": []
2026-06-21T09:42:01.5913871Z         },
2026-06-21T09:42:01.5914041Z         "impl": {
2026-06-21T09:42:01.5914205Z           "complete": true,
2026-06-21T09:42:01.5914366Z           "evidence": [
2026-06-21T09:42:01.5914525Z             {
2026-06-21T09:42:01.5914744Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.5914919Z               "line": 552
2026-06-21T09:42:01.5915066Z             },
2026-06-21T09:42:01.5915227Z             {
2026-06-21T09:42:01.5915426Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:42:01.5915579Z               "line": 28
2026-06-21T09:42:01.5915736Z             }
2026-06-21T09:42:01.5915889Z           ]
2026-06-21T09:42:01.5916047Z         },
2026-06-21T09:42:01.5916204Z         "int": {
2026-06-21T09:42:01.5916371Z           "complete": false,
2026-06-21T09:42:01.5916538Z           "evidence": []
2026-06-21T09:42:01.5916705Z         },
2026-06-21T09:42:01.5916871Z         "unit": {
2026-06-21T09:42:01.5917034Z           "complete": true,
2026-06-21T09:42:01.5917200Z           "evidence": [
2026-06-21T09:42:01.5917349Z             {
2026-06-21T09:42:01.5917561Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:42:01.5917719Z               "line": 229
2026-06-21T09:42:01.5917883Z             }
2026-06-21T09:42:01.5918041Z           ]
2026-06-21T09:42:01.5918193Z         }
2026-06-21T09:42:01.5918346Z       }
2026-06-21T09:42:01.5918503Z     },
2026-06-21T09:42:01.5918661Z     {
2026-06-21T09:42:01.5918841Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-21T09:42:01.5919166Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-21T09:42:01.5919342Z       "requiredStages": [],
2026-06-21T09:42:01.5919495Z       "stages": {
2026-06-21T09:42:01.5919648Z         "doc": {
2026-06-21T09:42:01.5919810Z           "complete": false,
2026-06-21T09:42:01.5919972Z           "evidence": []
2026-06-21T09:42:01.5920124Z         },
2026-06-21T09:42:01.5920278Z         "impl": {
2026-06-21T09:42:01.5920451Z           "complete": false,
2026-06-21T09:42:01.5920606Z           "evidence": []
2026-06-21T09:42:01.5920752Z         },
2026-06-21T09:42:01.5920906Z         "int": {
2026-06-21T09:42:01.5921072Z           "complete": false,
2026-06-21T09:42:01.5921235Z           "evidence": []
2026-06-21T09:42:01.5921391Z         },
2026-06-21T09:42:01.5921535Z         "unit": {
2026-06-21T09:42:01.5921701Z           "complete": false,
2026-06-21T09:42:01.5921864Z           "evidence": []
2026-06-21T09:42:01.5922016Z         }
2026-06-21T09:42:01.5922161Z       }
2026-06-21T09:42:01.5922311Z     },
2026-06-21T09:42:01.5922461Z     {
2026-06-21T09:42:01.5922654Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-21T09:42:01.5922910Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-21T09:42:01.5923191Z       "requiredStages": [
2026-06-21T09:42:01.5923333Z         "impl",
2026-06-21T09:42:01.5923492Z         "unit"
2026-06-21T09:42:01.5923730Z       ],
2026-06-21T09:42:01.5923887Z       "stages": {
2026-06-21T09:42:01.5924050Z         "doc": {
2026-06-21T09:42:01.5924211Z           "complete": false,
2026-06-21T09:42:01.5924374Z           "evidence": []
2026-06-21T09:42:01.5924516Z         },
2026-06-21T09:42:01.5924674Z         "impl": {
2026-06-21T09:42:01.5924845Z           "complete": true,
2026-06-21T09:42:01.5925004Z           "evidence": [
2026-06-21T09:42:01.5925164Z             {
2026-06-21T09:42:01.5925361Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T09:42:01.5925521Z               "line": 19
2026-06-21T09:42:01.5925674Z             },
2026-06-21T09:42:01.5925838Z             {
2026-06-21T09:42:01.5926044Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5926215Z               "line": 463
2026-06-21T09:42:01.5926373Z             },
2026-06-21T09:42:01.5926529Z             {
2026-06-21T09:42:01.5926740Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5926906Z               "line": 499
2026-06-21T09:42:01.5927063Z             },
2026-06-21T09:42:01.5927216Z             {
2026-06-21T09:42:01.5927431Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5927599Z               "line": 547
2026-06-21T09:42:01.5927740Z             },
2026-06-21T09:42:01.5927890Z             {
2026-06-21T09:42:01.5928088Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:42:01.5928255Z               "line": 15
2026-06-21T09:42:01.5928400Z             },
2026-06-21T09:42:01.5928548Z             {
2026-06-21T09:42:01.5928758Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:42:01.5928911Z               "line": 48
2026-06-21T09:42:01.5929139Z             },
2026-06-21T09:42:01.5929302Z             {
2026-06-21T09:42:01.5929507Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:42:01.5929673Z               "line": 119
2026-06-21T09:42:01.5929827Z             },
2026-06-21T09:42:01.5929979Z             {
2026-06-21T09:42:01.5930171Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.5930336Z               "line": 3948
2026-06-21T09:42:01.5930490Z             }
2026-06-21T09:42:01.5930646Z           ]
2026-06-21T09:42:01.5930805Z         },
2026-06-21T09:42:01.5935705Z         "int": {
2026-06-21T09:42:01.5935883Z           "complete": false,
2026-06-21T09:42:01.5936049Z           "evidence": []
2026-06-21T09:42:01.5936220Z         },
2026-06-21T09:42:01.5936375Z         "unit": {
2026-06-21T09:42:01.5936561Z           "complete": true,
2026-06-21T09:42:01.5936718Z           "evidence": [
2026-06-21T09:42:01.5936890Z             {
2026-06-21T09:42:01.5937162Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5937329Z               "line": 765
2026-06-21T09:42:01.5937491Z             },
2026-06-21T09:42:01.5937643Z             {
2026-06-21T09:42:01.5937877Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:42:01.5938048Z               "line": 165
2026-06-21T09:42:01.5938197Z             },
2026-06-21T09:42:01.5938358Z             {
2026-06-21T09:42:01.5938559Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:42:01.5938728Z               "line": 175
2026-06-21T09:42:01.5938872Z             }
2026-06-21T09:42:01.5939104Z           ]
2026-06-21T09:42:01.5939266Z         }
2026-06-21T09:42:01.5939404Z       }
2026-06-21T09:42:01.5939553Z     },
2026-06-21T09:42:01.5939699Z     {
2026-06-21T09:42:01.5939896Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-21T09:42:01.5941346Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-21T09:42:01.5941687Z       "requiredStages": [
2026-06-21T09:42:01.5941849Z         "impl",
2026-06-21T09:42:01.5942007Z         "unit"
2026-06-21T09:42:01.5942259Z       ],
2026-06-21T09:42:01.5942412Z       "stages": {
2026-06-21T09:42:01.5942574Z         "doc": {
2026-06-21T09:42:01.5942741Z           "complete": false,
2026-06-21T09:42:01.5942903Z           "evidence": []
2026-06-21T09:42:01.5943099Z         },
2026-06-21T09:42:01.5943257Z         "impl": {
2026-06-21T09:42:01.5943432Z           "complete": true,
2026-06-21T09:42:01.5943591Z           "evidence": [
2026-06-21T09:42:01.5943746Z             {
2026-06-21T09:42:01.5943946Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5944106Z               "line": 192
2026-06-21T09:42:01.5944263Z             },
2026-06-21T09:42:01.5944416Z             {
2026-06-21T09:42:01.5944612Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5944768Z               "line": 279
2026-06-21T09:42:01.5944917Z             }
2026-06-21T09:42:01.5945069Z           ]
2026-06-21T09:42:01.5945222Z         },
2026-06-21T09:42:01.5945374Z         "int": {
2026-06-21T09:42:01.5945546Z           "complete": false,
2026-06-21T09:42:01.5945732Z           "evidence": []
2026-06-21T09:42:01.5945880Z         },
2026-06-21T09:42:01.5946042Z         "unit": {
2026-06-21T09:42:01.5946209Z           "complete": true,
2026-06-21T09:42:01.5946371Z           "evidence": [
2026-06-21T09:42:01.5946534Z             {
2026-06-21T09:42:01.5946727Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5946897Z               "line": 470
2026-06-21T09:42:01.5947049Z             },
2026-06-21T09:42:01.5947207Z             {
2026-06-21T09:42:01.5947388Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.5947555Z               "line": 526
2026-06-21T09:42:01.5947712Z             }
2026-06-21T09:42:01.5947860Z           ]
2026-06-21T09:42:01.5948013Z         }
2026-06-21T09:42:01.5948165Z       }
2026-06-21T09:42:01.5948318Z     },
2026-06-21T09:42:01.5948475Z     {
2026-06-21T09:42:01.5948676Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-21T09:42:01.5954440Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-21T09:42:01.5954628Z       "requiredStages": [
2026-06-21T09:42:01.5954785Z         "impl",
2026-06-21T09:42:01.5954938Z         "unit",
2026-06-21T09:42:01.5955100Z         "int"
2026-06-21T09:42:01.5955252Z       ],
2026-06-21T09:42:01.5955415Z       "stages": {
2026-06-21T09:42:01.5955567Z         "doc": {
2026-06-21T09:42:01.5955735Z           "complete": false,
2026-06-21T09:42:01.5955896Z           "evidence": []
2026-06-21T09:42:01.5956049Z         },
2026-06-21T09:42:01.5956207Z         "impl": {
2026-06-21T09:42:01.5956379Z           "complete": true,
2026-06-21T09:42:01.5956708Z           "evidence": [
2026-06-21T09:42:01.5956859Z             {
2026-06-21T09:42:01.5957098Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.5957364Z               "line": 116
2026-06-21T09:42:01.5957524Z             },
2026-06-21T09:42:01.5957672Z             {
2026-06-21T09:42:01.5957886Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.5958039Z               "line": 132
2026-06-21T09:42:01.5958191Z             },
2026-06-21T09:42:01.5958354Z             {
2026-06-21T09:42:01.5958563Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.5958720Z               "line": 434
2026-06-21T09:42:01.5958887Z             },
2026-06-21T09:42:01.5959106Z             {
2026-06-21T09:42:01.5959322Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5959484Z               "line": 139
2026-06-21T09:42:01.5959661Z             },
2026-06-21T09:42:01.5959840Z             {
2026-06-21T09:42:01.5960086Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5960272Z               "line": 326
2026-06-21T09:42:01.5960447Z             },
2026-06-21T09:42:01.5960621Z             {
2026-06-21T09:42:01.5960849Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5961035Z               "line": 555
2026-06-21T09:42:01.5961211Z             }
2026-06-21T09:42:01.5961396Z           ]
2026-06-21T09:42:01.5961574Z         },
2026-06-21T09:42:01.5961754Z         "int": {
2026-06-21T09:42:01.5961950Z           "complete": true,
2026-06-21T09:42:01.5962133Z           "evidence": [
2026-06-21T09:42:01.5962312Z             {
2026-06-21T09:42:01.5962570Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T09:42:01.5962764Z               "line": 32
2026-06-21T09:42:01.5962932Z             }
2026-06-21T09:42:01.5963108Z           ]
2026-06-21T09:42:01.5963284Z         },
2026-06-21T09:42:01.5963466Z         "unit": {
2026-06-21T09:42:01.5963641Z           "complete": true,
2026-06-21T09:42:01.5963804Z           "evidence": [
2026-06-21T09:42:01.5963960Z             {
2026-06-21T09:42:01.5964166Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5964324Z               "line": 625
2026-06-21T09:42:01.5964477Z             },
2026-06-21T09:42:01.5964624Z             {
2026-06-21T09:42:01.5964838Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5964990Z               "line": 646
2026-06-21T09:42:01.5965132Z             },
2026-06-21T09:42:01.5965287Z             {
2026-06-21T09:42:01.5965484Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5965641Z               "line": 662
2026-06-21T09:42:01.5965785Z             },
2026-06-21T09:42:01.5965941Z             {
2026-06-21T09:42:01.5966142Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5966309Z               "line": 680
2026-06-21T09:42:01.5966471Z             },
2026-06-21T09:42:01.5966634Z             {
2026-06-21T09:42:01.5966838Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5967006Z               "line": 704
2026-06-21T09:42:01.5967157Z             }
2026-06-21T09:42:01.5967311Z           ]
2026-06-21T09:42:01.5967467Z         }
2026-06-21T09:42:01.5967621Z       }
2026-06-21T09:42:01.5967767Z     },
2026-06-21T09:42:01.5967919Z     {
2026-06-21T09:42:01.5968107Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-21T09:42:01.5968374Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-21T09:42:01.5968542Z       "requiredStages": [
2026-06-21T09:42:01.5968699Z         "impl",
2026-06-21T09:42:01.5968857Z         "unit"
2026-06-21T09:42:01.5969080Z       ],
2026-06-21T09:42:01.5969238Z       "stages": {
2026-06-21T09:42:01.5969385Z         "doc": {
2026-06-21T09:42:01.5969567Z           "complete": false,
2026-06-21T09:42:01.5969724Z           "evidence": []
2026-06-21T09:42:01.5969873Z         },
2026-06-21T09:42:01.5970034Z         "impl": {
2026-06-21T09:42:01.5970319Z           "complete": true,
2026-06-21T09:42:01.5970491Z           "evidence": [
2026-06-21T09:42:01.5970760Z             {
2026-06-21T09:42:01.5970961Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:42:01.5971123Z               "line": 35
2026-06-21T09:42:01.5971280Z             }
2026-06-21T09:42:01.5971429Z           ]
2026-06-21T09:42:01.5971566Z         },
2026-06-21T09:42:01.5971724Z         "int": {
2026-06-21T09:42:01.5971890Z           "complete": false,
2026-06-21T09:42:01.5972058Z           "evidence": []
2026-06-21T09:42:01.5972205Z         },
2026-06-21T09:42:01.5972368Z         "unit": {
2026-06-21T09:42:01.5972534Z           "complete": true,
2026-06-21T09:42:01.5972697Z           "evidence": [
2026-06-21T09:42:01.5972858Z             {
2026-06-21T09:42:01.5973059Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:42:01.5973229Z               "line": 220
2026-06-21T09:42:01.5973382Z             }
2026-06-21T09:42:01.5973567Z           ]
2026-06-21T09:42:01.5973754Z         }
2026-06-21T09:42:01.5973935Z       }
2026-06-21T09:42:01.5974112Z     },
2026-06-21T09:42:01.5974283Z     {
2026-06-21T09:42:01.5974507Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-21T09:42:01.5979325Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-21T09:42:01.5979551Z       "requiredStages": [
2026-06-21T09:42:01.5979727Z         "impl",
2026-06-21T09:42:01.5979907Z         "unit",
2026-06-21T09:42:01.5980061Z         "int"
2026-06-21T09:42:01.5980212Z       ],
2026-06-21T09:42:01.5980366Z       "stages": {
2026-06-21T09:42:01.5980517Z         "doc": {
2026-06-21T09:42:01.5980690Z           "complete": false,
2026-06-21T09:42:01.5980851Z           "evidence": []
2026-06-21T09:42:01.5981008Z         },
2026-06-21T09:42:01.5981158Z         "impl": {
2026-06-21T09:42:01.5981311Z           "complete": true,
2026-06-21T09:42:01.5981464Z           "evidence": [
2026-06-21T09:42:01.5981630Z             {
2026-06-21T09:42:01.5981854Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.5982013Z               "line": 202
2026-06-21T09:42:01.5982164Z             },
2026-06-21T09:42:01.5982318Z             {
2026-06-21T09:42:01.5982517Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T09:42:01.5982670Z               "line": 107
2026-06-21T09:42:01.5982832Z             },
2026-06-21T09:42:01.5982990Z             {
2026-06-21T09:42:01.5983180Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T09:42:01.5983338Z               "line": 138
2026-06-21T09:42:01.5983485Z             },
2026-06-21T09:42:01.5983643Z             {
2026-06-21T09:42:01.5983841Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5984014Z               "line": 209
2026-06-21T09:42:01.5984171Z             },
2026-06-21T09:42:01.5984324Z             {
2026-06-21T09:42:01.5984534Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5984815Z               "line": 246
2026-06-21T09:42:01.5984977Z             },
2026-06-21T09:42:01.5985129Z             {
2026-06-21T09:42:01.5985429Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.5985597Z               "line": 379
2026-06-21T09:42:01.5985739Z             }
2026-06-21T09:42:01.5985888Z           ]
2026-06-21T09:42:01.5986044Z         },
2026-06-21T09:42:01.5986196Z         "int": {
2026-06-21T09:42:01.5986365Z           "complete": true,
2026-06-21T09:42:01.5986533Z           "evidence": [
2026-06-21T09:42:01.5986689Z             {
2026-06-21T09:42:01.5986924Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-21T09:42:01.5987091Z               "line": 17
2026-06-21T09:42:01.5987243Z             }
2026-06-21T09:42:01.5987401Z           ]
2026-06-21T09:42:01.5987553Z         },
2026-06-21T09:42:01.5987705Z         "unit": {
2026-06-21T09:42:01.5987867Z           "complete": true,
2026-06-21T09:42:01.5988020Z           "evidence": [
2026-06-21T09:42:01.5988178Z             {
2026-06-21T09:42:01.5988384Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.5988544Z               "line": 982
2026-06-21T09:42:01.5988694Z             }
2026-06-21T09:42:01.5988854Z           ]
2026-06-21T09:42:01.5989078Z         }
2026-06-21T09:42:01.5989223Z       }
2026-06-21T09:42:01.5989381Z     },
2026-06-21T09:42:01.5989532Z     {
2026-06-21T09:42:01.5989725Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-21T09:42:01.5990153Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-21T09:42:01.5990325Z       "requiredStages": [
2026-06-21T09:42:01.5990491Z         "impl",
2026-06-21T09:42:01.5990645Z         "unit"
2026-06-21T09:42:01.5990801Z       ],
2026-06-21T09:42:01.5990955Z       "stages": {
2026-06-21T09:42:01.5991106Z         "doc": {
2026-06-21T09:42:01.5991270Z           "complete": false,
2026-06-21T09:42:01.5991439Z           "evidence": []
2026-06-21T09:42:01.5991601Z         },
2026-06-21T09:42:01.5991756Z         "impl": {
2026-06-21T09:42:01.5991924Z           "complete": true,
2026-06-21T09:42:01.5992085Z           "evidence": [
2026-06-21T09:42:01.5992239Z             {
2026-06-21T09:42:01.5992452Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.5992620Z               "line": 405
2026-06-21T09:42:01.5992772Z             },
2026-06-21T09:42:01.5992925Z             {
2026-06-21T09:42:01.5993139Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.5993301Z               "line": 409
2026-06-21T09:42:01.5993454Z             },
2026-06-21T09:42:01.5993606Z             {
2026-06-21T09:42:01.5993827Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:42:01.5993988Z               "line": 156
2026-06-21T09:42:01.5994132Z             }
2026-06-21T09:42:01.5994287Z           ]
2026-06-21T09:42:01.5994440Z         },
2026-06-21T09:42:01.5994602Z         "int": {
2026-06-21T09:42:01.5994769Z           "complete": false,
2026-06-21T09:42:01.5994931Z           "evidence": []
2026-06-21T09:42:01.5995089Z         },
2026-06-21T09:42:01.5995251Z         "unit": {
2026-06-21T09:42:01.5995418Z           "complete": true,
2026-06-21T09:42:01.5995580Z           "evidence": [
2026-06-21T09:42:01.5995738Z             {
2026-06-21T09:42:01.5995947Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.5996110Z               "line": 865
2026-06-21T09:42:01.5996271Z             },
2026-06-21T09:42:01.5996420Z             {
2026-06-21T09:42:01.5996628Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.5996789Z               "line": 879
2026-06-21T09:42:01.5996944Z             },
2026-06-21T09:42:01.5997098Z             {
2026-06-21T09:42:01.5997307Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.5997465Z               "line": 898
2026-06-21T09:42:01.5997622Z             },
2026-06-21T09:42:01.5997775Z             {
2026-06-21T09:42:01.5998094Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.5998261Z               "line": 915
2026-06-21T09:42:01.5998499Z             },
2026-06-21T09:42:01.5998653Z             {
2026-06-21T09:42:01.5998881Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T09:42:01.5999109Z               "line": 441
2026-06-21T09:42:01.5999273Z             }
2026-06-21T09:42:01.5999428Z           ]
2026-06-21T09:42:01.5999581Z         }
2026-06-21T09:42:01.5999745Z       }
2026-06-21T09:42:01.5999893Z     },
2026-06-21T09:42:01.6000041Z     {
2026-06-21T09:42:01.6000237Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-21T09:42:01.6014604Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-21T09:42:01.6014836Z       "requiredStages": [
2026-06-21T09:42:01.6014995Z         "doc",
2026-06-21T09:42:01.6015151Z         "impl",
2026-06-21T09:42:01.6015300Z         "unit",
2026-06-21T09:42:01.6015570Z         "int"
2026-06-21T09:42:01.6015727Z       ],
2026-06-21T09:42:01.6015890Z       "stages": {
2026-06-21T09:42:01.6016137Z         "doc": {
2026-06-21T09:42:01.6016304Z           "complete": true,
2026-06-21T09:42:01.6016471Z           "evidence": [
2026-06-21T09:42:01.6016614Z             {
2026-06-21T09:42:01.6016795Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6016953Z               "line": 420
2026-06-21T09:42:01.6017100Z             },
2026-06-21T09:42:01.6017258Z             {
2026-06-21T09:42:01.6017448Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.6017620Z               "line": 402
2026-06-21T09:42:01.6017776Z             }
2026-06-21T09:42:01.6017932Z           ]
2026-06-21T09:42:01.6018093Z         },
2026-06-21T09:42:01.6018247Z         "impl": {
2026-06-21T09:42:01.6018423Z           "complete": true,
2026-06-21T09:42:01.6018571Z           "evidence": [
2026-06-21T09:42:01.6018727Z             {
2026-06-21T09:42:01.6018928Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6019186Z               "line": 797
2026-06-21T09:42:01.6019338Z             },
2026-06-21T09:42:01.6019496Z             {
2026-06-21T09:42:01.6019706Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6019858Z               "line": 822
2026-06-21T09:42:01.6020006Z             },
2026-06-21T09:42:01.6020158Z             {
2026-06-21T09:42:01.6020364Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6020535Z               "line": 839
2026-06-21T09:42:01.6020681Z             },
2026-06-21T09:42:01.6020832Z             {
2026-06-21T09:42:01.6021033Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6021199Z               "line": 854
2026-06-21T09:42:01.6021348Z             },
2026-06-21T09:42:01.6021528Z             {
2026-06-21T09:42:01.6021753Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6021939Z               "line": 874
2026-06-21T09:42:01.6022124Z             },
2026-06-21T09:42:01.6022302Z             {
2026-06-21T09:42:01.6022529Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6022716Z               "line": 964
2026-06-21T09:42:01.6022902Z             },
2026-06-21T09:42:01.6023082Z             {
2026-06-21T09:42:01.6023301Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6023489Z               "line": 1016
2026-06-21T09:42:01.6023657Z             },
2026-06-21T09:42:01.6023813Z             {
2026-06-21T09:42:01.6024004Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6024171Z               "line": 1075
2026-06-21T09:42:01.6024333Z             },
2026-06-21T09:42:01.6024486Z             {
2026-06-21T09:42:01.6024701Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.6024864Z               "line": 527
2026-06-21T09:42:01.6025020Z             }
2026-06-21T09:42:01.6025174Z           ]
2026-06-21T09:42:01.6025325Z         },
2026-06-21T09:42:01.6025494Z         "int": {
2026-06-21T09:42:01.6025653Z           "complete": true,
2026-06-21T09:42:01.6025818Z           "evidence": [
2026-06-21T09:42:01.6025964Z             {
2026-06-21T09:42:01.6026188Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T09:42:01.6026349Z               "line": 35
2026-06-21T09:42:01.6026513Z             },
2026-06-21T09:42:01.6026668Z             {
2026-06-21T09:42:01.6026874Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T09:42:01.6027036Z               "line": 569
2026-06-21T09:42:01.6027189Z             },
2026-06-21T09:42:01.6027351Z             {
2026-06-21T09:42:01.6027560Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T09:42:01.6027719Z               "line": 590
2026-06-21T09:42:01.6027879Z             }
2026-06-21T09:42:01.6028028Z           ]
2026-06-21T09:42:01.6028189Z         },
2026-06-21T09:42:01.6028346Z         "unit": {
2026-06-21T09:42:01.6028520Z           "complete": true,
2026-06-21T09:42:01.6028826Z           "evidence": [
2026-06-21T09:42:01.6029069Z             {
2026-06-21T09:42:01.6029273Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6029540Z               "line": 1202
2026-06-21T09:42:01.6029699Z             },
2026-06-21T09:42:01.6029850Z             {
2026-06-21T09:42:01.6030056Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6030223Z               "line": 1246
2026-06-21T09:42:01.6030375Z             },
2026-06-21T09:42:01.6030528Z             {
2026-06-21T09:42:01.6030728Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6030891Z               "line": 1260
2026-06-21T09:42:01.6031047Z             },
2026-06-21T09:42:01.6031203Z             {
2026-06-21T09:42:01.6031416Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6031564Z               "line": 1278
2026-06-21T09:42:01.6031721Z             },
2026-06-21T09:42:01.6031874Z             {
2026-06-21T09:42:01.6032069Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6032237Z               "line": 1302
2026-06-21T09:42:01.6032398Z             },
2026-06-21T09:42:01.6032547Z             {
2026-06-21T09:42:01.6032751Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6032914Z               "line": 1529
2026-06-21T09:42:01.6033071Z             }
2026-06-21T09:42:01.6033233Z           ]
2026-06-21T09:42:01.6033381Z         }
2026-06-21T09:42:01.6033539Z       }
2026-06-21T09:42:01.6033694Z     },
2026-06-21T09:42:01.6033847Z     {
2026-06-21T09:42:01.6034035Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-21T09:42:01.6037238Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-21T09:42:01.6037416Z       "requiredStages": [
2026-06-21T09:42:01.6037567Z         "unit",
2026-06-21T09:42:01.6037716Z         "int"
2026-06-21T09:42:01.6037872Z       ],
2026-06-21T09:42:01.6038031Z       "stages": {
2026-06-21T09:42:01.6038187Z         "doc": {
2026-06-21T09:42:01.6038360Z           "complete": true,
2026-06-21T09:42:01.6038507Z           "evidence": [
2026-06-21T09:42:01.6038666Z             {
2026-06-21T09:42:01.6038854Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.6039099Z               "line": 381
2026-06-21T09:42:01.6039257Z             }
2026-06-21T09:42:01.6039419Z           ]
2026-06-21T09:42:01.6039572Z         },
2026-06-21T09:42:01.6039729Z         "impl": {
2026-06-21T09:42:01.6039906Z           "complete": true,
2026-06-21T09:42:01.6040063Z           "evidence": [
2026-06-21T09:42:01.6040216Z             {
2026-06-21T09:42:01.6040410Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.6040583Z               "line": 143
2026-06-21T09:42:01.6040735Z             }
2026-06-21T09:42:01.6040884Z           ]
2026-06-21T09:42:01.6041036Z         },
2026-06-21T09:42:01.6041189Z         "int": {
2026-06-21T09:42:01.6041364Z           "complete": true,
2026-06-21T09:42:01.6041523Z           "evidence": [
2026-06-21T09:42:01.6041683Z             {
2026-06-21T09:42:01.6041892Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.6042043Z               "line": 1042
2026-06-21T09:42:01.6042201Z             }
2026-06-21T09:42:01.6042343Z           ]
2026-06-21T09:42:01.6042497Z         },
2026-06-21T09:42:01.6042768Z         "unit": {
2026-06-21T09:42:01.6042949Z           "complete": true,
2026-06-21T09:42:01.6043126Z           "evidence": [
2026-06-21T09:42:01.6043368Z             {
2026-06-21T09:42:01.6043578Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.6043813Z               "line": 2410
2026-06-21T09:42:01.6044042Z             }
2026-06-21T09:42:01.6044273Z           ]
2026-06-21T09:42:01.6044505Z         }
2026-06-21T09:42:01.6044739Z       }
2026-06-21T09:42:01.6044896Z     },
2026-06-21T09:42:01.6045058Z     {
2026-06-21T09:42:01.6045345Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-21T09:42:01.6053381Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-21T09:42:01.6053585Z       "requiredStages": [
2026-06-21T09:42:01.6053748Z         "impl",
2026-06-21T09:42:01.6053905Z         "unit"
2026-06-21T09:42:01.6054067Z       ],
2026-06-21T09:42:01.6054229Z       "stages": {
2026-06-21T09:42:01.6054391Z         "doc": {
2026-06-21T09:42:01.6054558Z           "complete": false,
2026-06-21T09:42:01.6054730Z           "evidence": []
2026-06-21T09:42:01.6054881Z         },
2026-06-21T09:42:01.6055037Z         "impl": {
2026-06-21T09:42:01.6055202Z           "complete": true,
2026-06-21T09:42:01.6055357Z           "evidence": [
2026-06-21T09:42:01.6055522Z             {
2026-06-21T09:42:01.6055733Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.6055910Z               "line": 358
2026-06-21T09:42:01.6056061Z             },
2026-06-21T09:42:01.6056220Z             {
2026-06-21T09:42:01.6056423Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.6056582Z               "line": 778
2026-06-21T09:42:01.6056734Z             }
2026-06-21T09:42:01.6056888Z           ]
2026-06-21T09:42:01.6057044Z         },
2026-06-21T09:42:01.6057198Z         "int": {
2026-06-21T09:42:01.6057378Z           "complete": false,
2026-06-21T09:42:01.6057546Z           "evidence": []
2026-06-21T09:42:01.6057696Z         },
2026-06-21T09:42:01.6057858Z         "unit": {
2026-06-21T09:42:01.6058030Z           "complete": true,
2026-06-21T09:42:01.6058193Z           "evidence": [
2026-06-21T09:42:01.6058349Z             {
2026-06-21T09:42:01.6058560Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.6058869Z               "line": 2470
2026-06-21T09:42:01.6059113Z             },
2026-06-21T09:42:01.6059360Z             {
2026-06-21T09:42:01.6059574Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.6059733Z               "line": 2531
2026-06-21T09:42:01.6059889Z             }
2026-06-21T09:42:01.6060046Z           ]
2026-06-21T09:42:01.6060201Z         }
2026-06-21T09:42:01.6060358Z       }
2026-06-21T09:42:01.6060516Z     },
2026-06-21T09:42:01.6060663Z     {
2026-06-21T09:42:01.6060854Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-21T09:42:01.6062070Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-21T09:42:01.6062251Z       "requiredStages": [
2026-06-21T09:42:01.6062413Z         "doc",
2026-06-21T09:42:01.6062566Z         "impl",
2026-06-21T09:42:01.6062724Z         "unit"
2026-06-21T09:42:01.6062870Z       ],
2026-06-21T09:42:01.6063027Z       "stages": {
2026-06-21T09:42:01.6063192Z         "doc": {
2026-06-21T09:42:01.6063354Z           "complete": true,
2026-06-21T09:42:01.6063521Z           "evidence": [
2026-06-21T09:42:01.6063673Z             {
2026-06-21T09:42:01.6063869Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.6064032Z               "line": 366
2026-06-21T09:42:01.6064188Z             }
2026-06-21T09:42:01.6064336Z           ]
2026-06-21T09:42:01.6064484Z         },
2026-06-21T09:42:01.6064642Z         "impl": {
2026-06-21T09:42:01.6064813Z           "complete": true,
2026-06-21T09:42:01.6064980Z           "evidence": [
2026-06-21T09:42:01.6065133Z             {
2026-06-21T09:42:01.6065346Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:42:01.6065503Z               "line": 87
2026-06-21T09:42:01.6065658Z             },
2026-06-21T09:42:01.6065816Z             {
2026-06-21T09:42:01.6066030Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:42:01.6066193Z               "line": 105
2026-06-21T09:42:01.6066349Z             },
2026-06-21T09:42:01.6066508Z             {
2026-06-21T09:42:01.6066721Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.6066879Z               "line": 55
2026-06-21T09:42:01.6067036Z             },
2026-06-21T09:42:01.6067189Z             {
2026-06-21T09:42:01.6067400Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.6067560Z               "line": 31
2026-06-21T09:42:01.6067710Z             },
2026-06-21T09:42:01.6067870Z             {
2026-06-21T09:42:01.6068082Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.6068252Z               "line": 446
2026-06-21T09:42:01.6068409Z             },
2026-06-21T09:42:01.6068566Z             {
2026-06-21T09:42:01.6068781Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:42:01.6069030Z               "line": 95
2026-06-21T09:42:01.6069172Z             },
2026-06-21T09:42:01.6069324Z             {
2026-06-21T09:42:01.6069548Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.6069706Z               "line": 29
2026-06-21T09:42:01.6069858Z             },
2026-06-21T09:42:01.6070017Z             {
2026-06-21T09:42:01.6070235Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.6070406Z               "line": 104
2026-06-21T09:42:01.6070563Z             },
2026-06-21T09:42:01.6070710Z             {
2026-06-21T09:42:01.6070923Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.6071095Z               "line": 208
2026-06-21T09:42:01.6071247Z             },
2026-06-21T09:42:01.6071400Z             {
2026-06-21T09:42:01.6071610Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T09:42:01.6071772Z               "line": 28
2026-06-21T09:42:01.6071925Z             },
2026-06-21T09:42:01.6072187Z             {
2026-06-21T09:42:01.6072401Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T09:42:01.6072668Z               "line": 74
2026-06-21T09:42:01.6072826Z             },
2026-06-21T09:42:01.6072973Z             {
2026-06-21T09:42:01.6073194Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T09:42:01.6073359Z               "line": 32
2026-06-21T09:42:01.6073502Z             },
2026-06-21T09:42:01.6073662Z             {
2026-06-21T09:42:01.6073867Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.6074028Z               "line": 40
2026-06-21T09:42:01.6074182Z             },
2026-06-21T09:42:01.6074324Z             {
2026-06-21T09:42:01.6074530Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.6074686Z               "line": 184
2026-06-21T09:42:01.6074845Z             },
2026-06-21T09:42:01.6074991Z             {
2026-06-21T09:42:01.6075188Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:42:01.6075349Z               "line": 61
2026-06-21T09:42:01.6075503Z             },
2026-06-21T09:42:01.6075659Z             {
2026-06-21T09:42:01.6075860Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:42:01.6076025Z               "line": 131
2026-06-21T09:42:01.6076186Z             },
2026-06-21T09:42:01.6076337Z             {
2026-06-21T09:42:01.6076543Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:42:01.6076700Z               "line": 223
2026-06-21T09:42:01.6076858Z             },
2026-06-21T09:42:01.6077001Z             {
2026-06-21T09:42:01.6077205Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T09:42:01.6077373Z               "line": 37
2026-06-21T09:42:01.6077520Z             },
2026-06-21T09:42:01.6077674Z             {
2026-06-21T09:42:01.6077878Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:42:01.6078046Z               "line": 38
2026-06-21T09:42:01.6078202Z             },
2026-06-21T09:42:01.6078361Z             {
2026-06-21T09:42:01.6078570Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T09:42:01.6078731Z               "line": 36
2026-06-21T09:42:01.6078892Z             },
2026-06-21T09:42:01.6079126Z             {
2026-06-21T09:42:01.6079332Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T09:42:01.6079488Z               "line": 40
2026-06-21T09:42:01.6079646Z             }
2026-06-21T09:42:01.6079793Z           ]
2026-06-21T09:42:01.6079938Z         },
2026-06-21T09:42:01.6080089Z         "int": {
2026-06-21T09:42:01.6080258Z           "complete": false,
2026-06-21T09:42:01.6080423Z           "evidence": []
2026-06-21T09:42:01.6080572Z         },
2026-06-21T09:42:01.6080723Z         "unit": {
2026-06-21T09:42:01.6080892Z           "complete": true,
2026-06-21T09:42:01.6081052Z           "evidence": [
2026-06-21T09:42:01.6081209Z             {
2026-06-21T09:42:01.6081416Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:42:01.6081589Z               "line": 212
2026-06-21T09:42:01.6081745Z             },
2026-06-21T09:42:01.6081889Z             {
2026-06-21T09:42:01.6082117Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T09:42:01.6082275Z               "line": 136
2026-06-21T09:42:01.6082432Z             },
2026-06-21T09:42:01.6082590Z             {
2026-06-21T09:42:01.6082814Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T09:42:01.6082971Z               "line": 685
2026-06-21T09:42:01.6083125Z             },
2026-06-21T09:42:01.6083281Z             {
2026-06-21T09:42:01.6083482Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T09:42:01.6083643Z               "line": 224
2026-06-21T09:42:01.6083792Z             },
2026-06-21T09:42:01.6083952Z             {
2026-06-21T09:42:01.6084170Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T09:42:01.6084331Z               "line": 206
2026-06-21T09:42:01.6084479Z             },
2026-06-21T09:42:01.6084818Z             {
2026-06-21T09:42:01.6085038Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T09:42:01.6085190Z               "line": 112
2026-06-21T09:42:01.6090430Z             },
2026-06-21T09:42:01.6090654Z             {
2026-06-21T09:42:01.6090874Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T09:42:01.6091045Z               "line": 157
2026-06-21T09:42:01.6091198Z             },
2026-06-21T09:42:01.6091355Z             {
2026-06-21T09:42:01.6091569Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:42:01.6091735Z               "line": 215
2026-06-21T09:42:01.6091891Z             },
2026-06-21T09:42:01.6092034Z             {
2026-06-21T09:42:01.6092244Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T09:42:01.6092401Z               "line": 141
2026-06-21T09:42:01.6092563Z             },
2026-06-21T09:42:01.6092712Z             {
2026-06-21T09:42:01.6092911Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T09:42:01.6093092Z               "line": 162
2026-06-21T09:42:01.6093245Z             }
2026-06-21T09:42:01.6093403Z           ]
2026-06-21T09:42:01.6093555Z         }
2026-06-21T09:42:01.6093708Z       }
2026-06-21T09:42:01.6093865Z     },
2026-06-21T09:42:01.6094019Z     {
2026-06-21T09:42:01.6094237Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-21T09:42:01.6097060Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-21T09:42:01.6097250Z       "requiredStages": [
2026-06-21T09:42:01.6097415Z         "doc",
2026-06-21T09:42:01.6097574Z         "impl",
2026-06-21T09:42:01.6097729Z         "unit",
2026-06-21T09:42:01.6097883Z         "int"
2026-06-21T09:42:01.6098034Z       ],
2026-06-21T09:42:01.6098193Z       "stages": {
2026-06-21T09:42:01.6098349Z         "doc": {
2026-06-21T09:42:01.6098527Z           "complete": true,
2026-06-21T09:42:01.6098688Z           "evidence": [
2026-06-21T09:42:01.6098832Z             {
2026-06-21T09:42:01.6099104Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.6099275Z               "line": 250
2026-06-21T09:42:01.6099419Z             }
2026-06-21T09:42:01.6099579Z           ]
2026-06-21T09:42:01.6099729Z         },
2026-06-21T09:42:01.6099885Z         "impl": {
2026-06-21T09:42:01.6100056Z           "complete": true,
2026-06-21T09:42:01.6100223Z           "evidence": [
2026-06-21T09:42:01.6100380Z             {
2026-06-21T09:42:01.6100580Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T09:42:01.6100758Z               "line": 135
2026-06-21T09:42:01.6100909Z             },
2026-06-21T09:42:01.6101068Z             {
2026-06-21T09:42:01.6101267Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T09:42:01.6101425Z               "line": 157
2026-06-21T09:42:01.6101572Z             }
2026-06-21T09:42:01.6101730Z           ]
2026-06-21T09:42:01.6101886Z         },
2026-06-21T09:42:01.6102036Z         "int": {
2026-06-21T09:42:01.6102186Z           "complete": true,
2026-06-21T09:42:01.6102353Z           "evidence": [
2026-06-21T09:42:01.6102503Z             {
2026-06-21T09:42:01.6102714Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-21T09:42:01.6102879Z               "line": 15
2026-06-21T09:42:01.6103033Z             }
2026-06-21T09:42:01.6103190Z           ]
2026-06-21T09:42:01.6103329Z         },
2026-06-21T09:42:01.6103485Z         "unit": {
2026-06-21T09:42:01.6103648Z           "complete": true,
2026-06-21T09:42:01.6103982Z           "evidence": [
2026-06-21T09:42:01.6104134Z             {
2026-06-21T09:42:01.6104353Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-21T09:42:01.6104612Z               "line": 233
2026-06-21T09:42:01.6104768Z             }
2026-06-21T09:42:01.6104917Z           ]
2026-06-21T09:42:01.6105072Z         }
2026-06-21T09:42:01.6105220Z       }
2026-06-21T09:42:01.6105371Z     },
2026-06-21T09:42:01.6105519Z     {
2026-06-21T09:42:01.6105728Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-21T09:42:01.6105999Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-21T09:42:01.6106172Z       "requiredStages": [
2026-06-21T09:42:01.6106328Z         "impl",
2026-06-21T09:42:01.6106483Z         "unit"
2026-06-21T09:42:01.6106634Z       ],
2026-06-21T09:42:01.6106793Z       "stages": {
2026-06-21T09:42:01.6106953Z         "doc": {
2026-06-21T09:42:01.6107122Z           "complete": false,
2026-06-21T09:42:01.6107302Z           "evidence": []
2026-06-21T09:42:01.6107460Z         },
2026-06-21T09:42:01.6107629Z         "impl": {
2026-06-21T09:42:01.6107796Z           "complete": true,
2026-06-21T09:42:01.6107965Z           "evidence": [
2026-06-21T09:42:01.6108124Z             {
2026-06-21T09:42:01.6108333Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.6108491Z               "line": 95
2026-06-21T09:42:01.6108647Z             },
2026-06-21T09:42:01.6108801Z             {
2026-06-21T09:42:01.6109077Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.6109243Z               "line": 117
2026-06-21T09:42:01.6109406Z             }
2026-06-21T09:42:01.6109563Z           ]
2026-06-21T09:42:01.6109721Z         },
2026-06-21T09:42:01.6109873Z         "int": {
2026-06-21T09:42:01.6110046Z           "complete": false,
2026-06-21T09:42:01.6110202Z           "evidence": []
2026-06-21T09:42:01.6110351Z         },
2026-06-21T09:42:01.6110506Z         "unit": {
2026-06-21T09:42:01.6110669Z           "complete": true,
2026-06-21T09:42:01.6110825Z           "evidence": [
2026-06-21T09:42:01.6110974Z             {
2026-06-21T09:42:01.6111173Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.6111337Z               "line": 250
2026-06-21T09:42:01.6111493Z             },
2026-06-21T09:42:01.6111642Z             {
2026-06-21T09:42:01.6111841Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:42:01.6111999Z               "line": 412
2026-06-21T09:42:01.6112141Z             },
2026-06-21T09:42:01.6112314Z             {
2026-06-21T09:42:01.6112500Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.6112661Z               "line": 611
2026-06-21T09:42:01.6112817Z             },
2026-06-21T09:42:01.6112970Z             {
2026-06-21T09:42:01.6113169Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.6113326Z               "line": 669
2026-06-21T09:42:01.6113488Z             }
2026-06-21T09:42:01.6113641Z           ]
2026-06-21T09:42:01.6113793Z         }
2026-06-21T09:42:01.6113956Z       }
2026-06-21T09:42:01.6114113Z     },
2026-06-21T09:42:01.6114265Z     {
2026-06-21T09:42:01.6114461Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-21T09:42:01.6118152Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-21T09:42:01.6118436Z       "requiredStages": [
2026-06-21T09:42:01.6118636Z         "impl",
2026-06-21T09:42:01.6118917Z         "unit",
2026-06-21T09:42:01.6119155Z         "int"
2026-06-21T09:42:01.6119313Z       ],
2026-06-21T09:42:01.6119470Z       "stages": {
2026-06-21T09:42:01.6119628Z         "doc": {
2026-06-21T09:42:01.6119799Z           "complete": false,
2026-06-21T09:42:01.6119952Z           "evidence": []
2026-06-21T09:42:01.6120104Z         },
2026-06-21T09:42:01.6120258Z         "impl": {
2026-06-21T09:42:01.6120419Z           "complete": true,
2026-06-21T09:42:01.6120587Z           "evidence": [
2026-06-21T09:42:01.6120739Z             {
2026-06-21T09:42:01.6120953Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6121114Z               "line": 925
2026-06-21T09:42:01.6121263Z             },
2026-06-21T09:42:01.6121423Z             {
2026-06-21T09:42:01.6121630Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6121796Z               "line": 994
2026-06-21T09:42:01.6121944Z             }
2026-06-21T09:42:01.6122101Z           ]
2026-06-21T09:42:01.6122254Z         },
2026-06-21T09:42:01.6122416Z         "int": {
2026-06-21T09:42:01.6122578Z           "complete": true,
2026-06-21T09:42:01.6122736Z           "evidence": [
2026-06-21T09:42:01.6122884Z             {
2026-06-21T09:42:01.6123094Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T09:42:01.6123264Z               "line": 187
2026-06-21T09:42:01.6123421Z             },
2026-06-21T09:42:01.6123581Z             {
2026-06-21T09:42:01.6123796Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T09:42:01.6123952Z               "line": 348
2026-06-21T09:42:01.6124101Z             }
2026-06-21T09:42:01.6124257Z           ]
2026-06-21T09:42:01.6124421Z         },
2026-06-21T09:42:01.6124577Z         "unit": {
2026-06-21T09:42:01.6124745Z           "complete": true,
2026-06-21T09:42:01.6124906Z           "evidence": [
2026-06-21T09:42:01.6125060Z             {
2026-06-21T09:42:01.6125283Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6125431Z               "line": 1206
2026-06-21T09:42:01.6125588Z             },
2026-06-21T09:42:01.6125742Z             {
2026-06-21T09:42:01.6125937Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6126103Z               "line": 8116
2026-06-21T09:42:01.6126254Z             }
2026-06-21T09:42:01.6126416Z           ]
2026-06-21T09:42:01.6126571Z         }
2026-06-21T09:42:01.6126725Z       }
2026-06-21T09:42:01.6126881Z     },
2026-06-21T09:42:01.6127039Z     {
2026-06-21T09:42:01.6127230Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-21T09:42:01.6127540Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-21T09:42:01.6127716Z       "requiredStages": [
2026-06-21T09:42:01.6127874Z         "impl",
2026-06-21T09:42:01.6128031Z         "unit"
2026-06-21T09:42:01.6128179Z       ],
2026-06-21T09:42:01.6128340Z       "stages": {
2026-06-21T09:42:01.6128494Z         "doc": {
2026-06-21T09:42:01.6128669Z           "complete": false,
2026-06-21T09:42:01.6128840Z           "evidence": []
2026-06-21T09:42:01.6129067Z         },
2026-06-21T09:42:01.6129258Z         "impl": {
2026-06-21T09:42:01.6129453Z           "complete": true,
2026-06-21T09:42:01.6129635Z           "evidence": [
2026-06-21T09:42:01.6129821Z             {
2026-06-21T09:42:01.6130054Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.6130240Z               "line": 262
2026-06-21T09:42:01.6130426Z             },
2026-06-21T09:42:01.6130608Z             {
2026-06-21T09:42:01.6130828Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.6131017Z               "line": 307
2026-06-21T09:42:01.6131208Z             },
2026-06-21T09:42:01.6131390Z             {
2026-06-21T09:42:01.6131617Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.6131775Z               "line": 319
2026-06-21T09:42:01.6132041Z             }
2026-06-21T09:42:01.6132195Z           ]
2026-06-21T09:42:01.6132351Z         },
2026-06-21T09:42:01.6132627Z         "int": {
2026-06-21T09:42:01.6132795Z           "complete": false,
2026-06-21T09:42:01.6132966Z           "evidence": []
2026-06-21T09:42:01.6133119Z         },
2026-06-21T09:42:01.6133281Z         "unit": {
2026-06-21T09:42:01.6133453Z           "complete": true,
2026-06-21T09:42:01.6133601Z           "evidence": [
2026-06-21T09:42:01.6133763Z             {
2026-06-21T09:42:01.6133962Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.6134127Z               "line": 455
2026-06-21T09:42:01.6134279Z             },
2026-06-21T09:42:01.6134433Z             {
2026-06-21T09:42:01.6134628Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.6134794Z               "line": 499
2026-06-21T09:42:01.6134948Z             }
2026-06-21T09:42:01.6135090Z           ]
2026-06-21T09:42:01.6135238Z         }
2026-06-21T09:42:01.6135395Z       }
2026-06-21T09:42:01.6135552Z     },
2026-06-21T09:42:01.6135705Z     {
2026-06-21T09:42:01.6135887Z       "id": "REQ-HOST-RUN-1",
2026-06-21T09:42:01.6139538Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-21T09:42:01.6139728Z       "requiredStages": [
2026-06-21T09:42:01.6139880Z         "impl",
2026-06-21T09:42:01.6140056Z         "unit",
2026-06-21T09:42:01.6140209Z         "int"
2026-06-21T09:42:01.6140371Z       ],
2026-06-21T09:42:01.6140538Z       "stages": {
2026-06-21T09:42:01.6140696Z         "doc": {
2026-06-21T09:42:01.6140872Z           "complete": false,
2026-06-21T09:42:01.6141030Z           "evidence": []
2026-06-21T09:42:01.6141191Z         },
2026-06-21T09:42:01.6141345Z         "impl": {
2026-06-21T09:42:01.6141515Z           "complete": true,
2026-06-21T09:42:01.6141684Z           "evidence": [
2026-06-21T09:42:01.6141835Z             {
2026-06-21T09:42:01.6142055Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.6142219Z               "line": 30
2026-06-21T09:42:01.6142373Z             },
2026-06-21T09:42:01.6142530Z             {
2026-06-21T09:42:01.6142759Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.6142921Z               "line": 76
2026-06-21T09:42:01.6143074Z             },
2026-06-21T09:42:01.6143241Z             {
2026-06-21T09:42:01.6143459Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.6143632Z               "line": 181
2026-06-21T09:42:01.6143779Z             },
2026-06-21T09:42:01.6143938Z             {
2026-06-21T09:42:01.6144132Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6144281Z               "line": 1266
2026-06-21T09:42:01.6144441Z             }
2026-06-21T09:42:01.6144589Z           ]
2026-06-21T09:42:01.6144739Z         },
2026-06-21T09:42:01.6144897Z         "int": {
2026-06-21T09:42:01.6145073Z           "complete": true,
2026-06-21T09:42:01.6145241Z           "evidence": [
2026-06-21T09:42:01.6145392Z             {
2026-06-21T09:42:01.6145603Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.6145764Z               "line": 285
2026-06-21T09:42:01.6145917Z             }
2026-06-21T09:42:01.6146069Z           ]
2026-06-21T09:42:01.6146227Z         },
2026-06-21T09:42:01.6146379Z         "unit": {
2026-06-21T09:42:01.6146661Z           "complete": true,
2026-06-21T09:42:01.6146824Z           "evidence": [
2026-06-21T09:42:01.6147072Z             {
2026-06-21T09:42:01.6147294Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.6147460Z               "line": 229
2026-06-21T09:42:01.6147611Z             },
2026-06-21T09:42:01.6147768Z             {
2026-06-21T09:42:01.6147982Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.6148146Z               "line": 296
2026-06-21T09:42:01.6148297Z             },
2026-06-21T09:42:01.6148446Z             {
2026-06-21T09:42:01.6148655Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.6148813Z               "line": 419
2026-06-21T09:42:01.6149042Z             }
2026-06-21T09:42:01.6149184Z           ]
2026-06-21T09:42:01.6149339Z         }
2026-06-21T09:42:01.6149489Z       }
2026-06-21T09:42:01.6149649Z     },
2026-06-21T09:42:01.6149799Z     {
2026-06-21T09:42:01.6149970Z       "id": "REQ-HOST-RUN-2",
2026-06-21T09:42:01.6152625Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-21T09:42:01.6152798Z       "requiredStages": [
2026-06-21T09:42:01.6152958Z         "impl",
2026-06-21T09:42:01.6153118Z         "unit",
2026-06-21T09:42:01.6153281Z         "int"
2026-06-21T09:42:01.6153428Z       ],
2026-06-21T09:42:01.6153586Z       "stages": {
2026-06-21T09:42:01.6153743Z         "doc": {
2026-06-21T09:42:01.6153910Z           "complete": false,
2026-06-21T09:42:01.6154063Z           "evidence": []
2026-06-21T09:42:01.6154225Z         },
2026-06-21T09:42:01.6154382Z         "impl": {
2026-06-21T09:42:01.6154545Z           "complete": true,
2026-06-21T09:42:01.6154707Z           "evidence": [
2026-06-21T09:42:01.6154860Z             {
2026-06-21T09:42:01.6155077Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.6155233Z               "line": 182
2026-06-21T09:42:01.6155395Z             },
2026-06-21T09:42:01.6155548Z             {
2026-06-21T09:42:01.6155748Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T09:42:01.6155895Z               "line": 113
2026-06-21T09:42:01.6156048Z             }
2026-06-21T09:42:01.6156205Z           ]
2026-06-21T09:42:01.6156363Z         },
2026-06-21T09:42:01.6156530Z         "int": {
2026-06-21T09:42:01.6156692Z           "complete": true,
2026-06-21T09:42:01.6156854Z           "evidence": [
2026-06-21T09:42:01.6157007Z             {
2026-06-21T09:42:01.6157221Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.6157384Z               "line": 572
2026-06-21T09:42:01.6157545Z             }
2026-06-21T09:42:01.6157708Z           ]
2026-06-21T09:42:01.6157849Z         },
2026-06-21T09:42:01.6158030Z         "unit": {
2026-06-21T09:42:01.6158194Z           "complete": true,
2026-06-21T09:42:01.6158363Z           "evidence": [
2026-06-21T09:42:01.6158505Z             {
2026-06-21T09:42:01.6158725Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T09:42:01.6158891Z               "line": 86
2026-06-21T09:42:01.6159134Z             }
2026-06-21T09:42:01.6159297Z           ]
2026-06-21T09:42:01.6159444Z         }
2026-06-21T09:42:01.6159593Z       }
2026-06-21T09:42:01.6159739Z     },
2026-06-21T09:42:01.6159889Z     {
2026-06-21T09:42:01.6160063Z       "id": "REQ-INFRA-1",
2026-06-21T09:42:01.6160364Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-21T09:42:01.6160653Z       "requiredStages": [],
2026-06-21T09:42:01.6160814Z       "stages": {
2026-06-21T09:42:01.6161066Z         "doc": {
2026-06-21T09:42:01.6161220Z           "complete": false,
2026-06-21T09:42:01.6161386Z           "evidence": []
2026-06-21T09:42:01.6161545Z         },
2026-06-21T09:42:01.6161701Z         "impl": {
2026-06-21T09:42:01.6161854Z           "complete": false,
2026-06-21T09:42:01.6162006Z           "evidence": []
2026-06-21T09:42:01.6162169Z         },
2026-06-21T09:42:01.6162317Z         "int": {
2026-06-21T09:42:01.6162494Z           "complete": false,
2026-06-21T09:42:01.6162660Z           "evidence": []
2026-06-21T09:42:01.6162809Z         },
2026-06-21T09:42:01.6162960Z         "unit": {
2026-06-21T09:42:01.6163123Z           "complete": false,
2026-06-21T09:42:01.6163288Z           "evidence": []
2026-06-21T09:42:01.6163441Z         }
2026-06-21T09:42:01.6163598Z       }
2026-06-21T09:42:01.6163746Z     },
2026-06-21T09:42:01.6163899Z     {
2026-06-21T09:42:01.6164071Z       "id": "REQ-INST-1",
2026-06-21T09:42:01.6164337Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-21T09:42:01.6164518Z       "requiredStages": [],
2026-06-21T09:42:01.6164671Z       "stages": {
2026-06-21T09:42:01.6164828Z         "doc": {
2026-06-21T09:42:01.6164986Z           "complete": false,
2026-06-21T09:42:01.6165147Z           "evidence": []
2026-06-21T09:42:01.6165300Z         },
2026-06-21T09:42:01.6165457Z         "impl": {
2026-06-21T09:42:01.6165628Z           "complete": false,
2026-06-21T09:42:01.6165779Z           "evidence": []
2026-06-21T09:42:01.6165930Z         },
2026-06-21T09:42:01.6166075Z         "int": {
2026-06-21T09:42:01.6166240Z           "complete": false,
2026-06-21T09:42:01.6166403Z           "evidence": []
2026-06-21T09:42:01.6166555Z         },
2026-06-21T09:42:01.6166718Z         "unit": {
2026-06-21T09:42:01.6166884Z           "complete": false,
2026-06-21T09:42:01.6167047Z           "evidence": []
2026-06-21T09:42:01.6167209Z         }
2026-06-21T09:42:01.6167361Z       }
2026-06-21T09:42:01.6167514Z     },
2026-06-21T09:42:01.6167671Z     {
2026-06-21T09:42:01.6167838Z       "id": "REQ-INST-10",
2026-06-21T09:42:01.6168188Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-21T09:42:01.6168362Z       "requiredStages": [
2026-06-21T09:42:01.6168523Z         "impl",
2026-06-21T09:42:01.6168679Z         "unit"
2026-06-21T09:42:01.6168841Z       ],
2026-06-21T09:42:01.6169084Z       "stages": {
2026-06-21T09:42:01.6169247Z         "doc": {
2026-06-21T09:42:01.6169408Z           "complete": false,
2026-06-21T09:42:01.6169571Z           "evidence": []
2026-06-21T09:42:01.6169723Z         },
2026-06-21T09:42:01.6169876Z         "impl": {
2026-06-21T09:42:01.6170052Z           "complete": true,
2026-06-21T09:42:01.6170205Z           "evidence": [
2026-06-21T09:42:01.6170357Z             {
2026-06-21T09:42:01.6170563Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6170735Z               "line": 648
2026-06-21T09:42:01.6170882Z             },
2026-06-21T09:42:01.6171043Z             {
2026-06-21T09:42:01.6171251Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6171403Z               "line": 725
2026-06-21T09:42:01.6171556Z             },
2026-06-21T09:42:01.6171703Z             {
2026-06-21T09:42:01.6171899Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T09:42:01.6172057Z               "line": 13
2026-06-21T09:42:01.6172209Z             },
2026-06-21T09:42:01.6172367Z             {
2026-06-21T09:42:01.6172562Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T09:42:01.6172739Z               "line": 67
2026-06-21T09:42:01.6172891Z             },
2026-06-21T09:42:01.6173068Z             {
2026-06-21T09:42:01.6173253Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.6173407Z               "line": 18
2026-06-21T09:42:01.6173563Z             },
2026-06-21T09:42:01.6173820Z             {
2026-06-21T09:42:01.6174010Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.6174258Z               "line": 444
2026-06-21T09:42:01.6174416Z             }
2026-06-21T09:42:01.6174573Z           ]
2026-06-21T09:42:01.6174730Z         },
2026-06-21T09:42:01.6174878Z         "int": {
2026-06-21T09:42:01.6175036Z           "complete": false,
2026-06-21T09:42:01.6175197Z           "evidence": []
2026-06-21T09:42:01.6175351Z         },
2026-06-21T09:42:01.6175502Z         "unit": {
2026-06-21T09:42:01.6175675Z           "complete": true,
2026-06-21T09:42:01.6175832Z           "evidence": [
2026-06-21T09:42:01.6175985Z             {
2026-06-21T09:42:01.6176198Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6176363Z               "line": 932
2026-06-21T09:42:01.6176515Z             },
2026-06-21T09:42:01.6176673Z             {
2026-06-21T09:42:01.6176882Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6177044Z               "line": 1309
2026-06-21T09:42:01.6177193Z             },
2026-06-21T09:42:01.6177345Z             {
2026-06-21T09:42:01.6177551Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6177716Z               "line": 1320
2026-06-21T09:42:01.6177865Z             },
2026-06-21T09:42:01.6178026Z             {
2026-06-21T09:42:01.6178232Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6178398Z               "line": 1336
2026-06-21T09:42:01.6178556Z             },
2026-06-21T09:42:01.6178709Z             {
2026-06-21T09:42:01.6178922Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6179156Z               "line": 1352
2026-06-21T09:42:01.6179310Z             },
2026-06-21T09:42:01.6179459Z             {
2026-06-21T09:42:01.6179663Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6179817Z               "line": 1374
2026-06-21T09:42:01.6179973Z             },
2026-06-21T09:42:01.6180131Z             {
2026-06-21T09:42:01.6180336Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6180503Z               "line": 1679
2026-06-21T09:42:01.6180655Z             },
2026-06-21T09:42:01.6180812Z             {
2026-06-21T09:42:01.6181004Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T09:42:01.6181175Z               "line": 130
2026-06-21T09:42:01.6181333Z             },
2026-06-21T09:42:01.6181484Z             {
2026-06-21T09:42:01.6181689Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T09:42:01.6181844Z               "line": 167
2026-06-21T09:42:01.6182002Z             },
2026-06-21T09:42:01.6182154Z             {
2026-06-21T09:42:01.6182350Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T09:42:01.6182507Z               "line": 175
2026-06-21T09:42:01.6182660Z             },
2026-06-21T09:42:01.6182807Z             {
2026-06-21T09:42:01.6183003Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T09:42:01.6183174Z               "line": 183
2026-06-21T09:42:01.6183327Z             },
2026-06-21T09:42:01.6183489Z             {
2026-06-21T09:42:01.6183689Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.6183842Z               "line": 896
2026-06-21T09:42:01.6183995Z             }
2026-06-21T09:42:01.6184137Z           ]
2026-06-21T09:42:01.6184291Z         }
2026-06-21T09:42:01.6184446Z       }
2026-06-21T09:42:01.6184595Z     },
2026-06-21T09:42:01.6184751Z     {
2026-06-21T09:42:01.6184919Z       "id": "REQ-INST-11",
2026-06-21T09:42:01.6185281Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-21T09:42:01.6185453Z       "requiredStages": [
2026-06-21T09:42:01.6185619Z         "impl",
2026-06-21T09:42:01.6185772Z         "unit"
2026-06-21T09:42:01.6185934Z       ],
2026-06-21T09:42:01.6186087Z       "stages": {
2026-06-21T09:42:01.6186240Z         "doc": {
2026-06-21T09:42:01.6186407Z           "complete": false,
2026-06-21T09:42:01.6186682Z           "evidence": []
2026-06-21T09:42:01.6186844Z         },
2026-06-21T09:42:01.6186999Z         "impl": {
2026-06-21T09:42:01.6187280Z           "complete": true,
2026-06-21T09:42:01.6187442Z           "evidence": [
2026-06-21T09:42:01.6187595Z             {
2026-06-21T09:42:01.6187806Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6187966Z               "line": 514
2026-06-21T09:42:01.6188125Z             },
2026-06-21T09:42:01.6188276Z             {
2026-06-21T09:42:01.6188496Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.6188658Z               "line": 297
2026-06-21T09:42:01.6188806Z             },
2026-06-21T09:42:01.6189051Z             {
2026-06-21T09:42:01.6189259Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T09:42:01.6189417Z               "line": 59
2026-06-21T09:42:01.6189563Z             },
2026-06-21T09:42:01.6189725Z             {
2026-06-21T09:42:01.6189913Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6190076Z               "line": 5291
2026-06-21T09:42:01.6190228Z             },
2026-06-21T09:42:01.6190386Z             {
2026-06-21T09:42:01.6190576Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6190724Z               "line": 7137
2026-06-21T09:42:01.6190876Z             }
2026-06-21T09:42:01.6191025Z           ]
2026-06-21T09:42:01.6191177Z         },
2026-06-21T09:42:01.6191335Z         "int": {
2026-06-21T09:42:01.6191502Z           "complete": false,
2026-06-21T09:42:01.6191659Z           "evidence": []
2026-06-21T09:42:01.6191802Z         },
2026-06-21T09:42:01.6191956Z         "unit": {
2026-06-21T09:42:01.6192125Z           "complete": true,
2026-06-21T09:42:01.6192278Z           "evidence": [
2026-06-21T09:42:01.6192433Z             {
2026-06-21T09:42:01.6192667Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6192857Z               "line": 1479
2026-06-21T09:42:01.6193043Z             },
2026-06-21T09:42:01.6193215Z             {
2026-06-21T09:42:01.6193458Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6193644Z               "line": 1512
2026-06-21T09:42:01.6193801Z             },
2026-06-21T09:42:01.6193954Z             {
2026-06-21T09:42:01.6194170Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.6194331Z               "line": 527
2026-06-21T09:42:01.6194475Z             },
2026-06-21T09:42:01.6194626Z             {
2026-06-21T09:42:01.6194827Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T09:42:01.6194997Z               "line": 160
2026-06-21T09:42:01.6195145Z             },
2026-06-21T09:42:01.6195302Z             {
2026-06-21T09:42:01.6195494Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T09:42:01.6195659Z               "line": 190
2026-06-21T09:42:01.6195804Z             },
2026-06-21T09:42:01.6195955Z             {
2026-06-21T09:42:01.6196156Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T09:42:01.6196322Z               "line": 225
2026-06-21T09:42:01.6196480Z             },
2026-06-21T09:42:01.6196642Z             {
2026-06-21T09:42:01.6196833Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6197000Z               "line": 7994
2026-06-21T09:42:01.6197152Z             }
2026-06-21T09:42:01.6197303Z           ]
2026-06-21T09:42:01.6197455Z         }
2026-06-21T09:42:01.6197611Z       }
2026-06-21T09:42:01.6197760Z     },
2026-06-21T09:42:01.6197911Z     {
2026-06-21T09:42:01.6198074Z       "id": "REQ-INST-12",
2026-06-21T09:42:01.6198545Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-21T09:42:01.6198723Z       "requiredStages": [
2026-06-21T09:42:01.6198870Z         "impl",
2026-06-21T09:42:01.6199104Z         "unit"
2026-06-21T09:42:01.6199262Z       ],
2026-06-21T09:42:01.6199408Z       "stages": {
2026-06-21T09:42:01.6199573Z         "doc": {
2026-06-21T09:42:01.6199839Z           "complete": false,
2026-06-21T09:42:01.6200006Z           "evidence": []
2026-06-21T09:42:01.6200156Z         },
2026-06-21T09:42:01.6200388Z         "impl": {
2026-06-21T09:42:01.6200564Z           "complete": true,
2026-06-21T09:42:01.6200712Z           "evidence": [
2026-06-21T09:42:01.6200870Z             {
2026-06-21T09:42:01.6201084Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6201252Z               "line": 566
2026-06-21T09:42:01.6201403Z             },
2026-06-21T09:42:01.6201562Z             {
2026-06-21T09:42:01.6201770Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6201923Z               "line": 659
2026-06-21T09:42:01.6202081Z             },
2026-06-21T09:42:01.6202238Z             {
2026-06-21T09:42:01.6202454Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6202614Z               "line": 739
2026-06-21T09:42:01.6202771Z             },
2026-06-21T09:42:01.6202926Z             {
2026-06-21T09:42:01.6203136Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.6203302Z               "line": 96
2026-06-21T09:42:01.6203461Z             },
2026-06-21T09:42:01.6203607Z             {
2026-06-21T09:42:01.6203808Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.6203960Z               "line": 269
2026-06-21T09:42:01.6204123Z             },
2026-06-21T09:42:01.6204265Z             {
2026-06-21T09:42:01.6204476Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:42:01.6204628Z               "line": 148
2026-06-21T09:42:01.6204776Z             }
2026-06-21T09:42:01.6204929Z           ]
2026-06-21T09:42:01.6205087Z         },
2026-06-21T09:42:01.6205248Z         "int": {
2026-06-21T09:42:01.6205406Z           "complete": false,
2026-06-21T09:42:01.6205571Z           "evidence": []
2026-06-21T09:42:01.6205720Z         },
2026-06-21T09:42:01.6205877Z         "unit": {
2026-06-21T09:42:01.6206030Z           "complete": true,
2026-06-21T09:42:01.6206201Z           "evidence": [
2026-06-21T09:42:01.6206359Z             {
2026-06-21T09:42:01.6206568Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6206731Z               "line": 1554
2026-06-21T09:42:01.6206882Z             },
2026-06-21T09:42:01.6207031Z             {
2026-06-21T09:42:01.6207231Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6207388Z               "line": 1577
2026-06-21T09:42:01.6207546Z             },
2026-06-21T09:42:01.6207698Z             {
2026-06-21T09:42:01.6207907Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6208067Z               "line": 1614
2026-06-21T09:42:01.6208229Z             },
2026-06-21T09:42:01.6208386Z             {
2026-06-21T09:42:01.6208587Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.6208744Z               "line": 457
2026-06-21T09:42:01.6208897Z             },
2026-06-21T09:42:01.6209149Z             {
2026-06-21T09:42:01.6209359Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:42:01.6209526Z               "line": 185
2026-06-21T09:42:01.6209693Z             },
2026-06-21T09:42:01.6209832Z             {
2026-06-21T09:42:01.6210040Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:42:01.6210189Z               "line": 206
2026-06-21T09:42:01.6210346Z             },
2026-06-21T09:42:01.6210495Z             {
2026-06-21T09:42:01.6210712Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:42:01.6210878Z               "line": 232
2026-06-21T09:42:01.6211029Z             }
2026-06-21T09:42:01.6211182Z           ]
2026-06-21T09:42:01.6211329Z         }
2026-06-21T09:42:01.6211488Z       }
2026-06-21T09:42:01.6211629Z     },
2026-06-21T09:42:01.6211788Z     {
2026-06-21T09:42:01.6211958Z       "id": "REQ-INST-13",
2026-06-21T09:42:01.6212268Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-21T09:42:01.6212535Z       "requiredStages": [
2026-06-21T09:42:01.6212690Z         "impl",
2026-06-21T09:42:01.6212845Z         "unit"
2026-06-21T09:42:01.6213085Z       ],
2026-06-21T09:42:01.6213236Z       "stages": {
2026-06-21T09:42:01.6213393Z         "doc": {
2026-06-21T09:42:01.6213562Z           "complete": false,
2026-06-21T09:42:01.6213725Z           "evidence": []
2026-06-21T09:42:01.6217877Z         },
2026-06-21T09:42:01.6218121Z         "impl": {
2026-06-21T09:42:01.6218291Z           "complete": true,
2026-06-21T09:42:01.6218462Z           "evidence": [
2026-06-21T09:42:01.6218617Z             {
2026-06-21T09:42:01.6218822Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.6219066Z               "line": 100
2026-06-21T09:42:01.6219218Z             },
2026-06-21T09:42:01.6219385Z             {
2026-06-21T09:42:01.6219604Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:42:01.6219777Z               "line": 171
2026-06-21T09:42:01.6219933Z             }
2026-06-21T09:42:01.6220096Z           ]
2026-06-21T09:42:01.6220248Z         },
2026-06-21T09:42:01.6220406Z         "int": {
2026-06-21T09:42:01.6220587Z           "complete": false,
2026-06-21T09:42:01.6220749Z           "evidence": []
2026-06-21T09:42:01.6220902Z         },
2026-06-21T09:42:01.6221069Z         "unit": {
2026-06-21T09:42:01.6221229Z           "complete": true,
2026-06-21T09:42:01.6221386Z           "evidence": [
2026-06-21T09:42:01.6221541Z             {
2026-06-21T09:42:01.6221752Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:42:01.6221903Z               "line": 261
2026-06-21T09:42:01.6222062Z             },
2026-06-21T09:42:01.6222213Z             {
2026-06-21T09:42:01.6222434Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:42:01.6222600Z               "line": 279
2026-06-21T09:42:01.6222748Z             }
2026-06-21T09:42:01.6222910Z           ]
2026-06-21T09:42:01.6223053Z         }
2026-06-21T09:42:01.6223216Z       }
2026-06-21T09:42:01.6223373Z     },
2026-06-21T09:42:01.6223531Z     {
2026-06-21T09:42:01.6223702Z       "id": "REQ-INST-14",
2026-06-21T09:42:01.6224324Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-21T09:42:01.6224489Z       "requiredStages": [
2026-06-21T09:42:01.6224633Z         "doc",
2026-06-21T09:42:01.6224790Z         "impl",
2026-06-21T09:42:01.6224948Z         "unit"
2026-06-21T09:42:01.6225109Z       ],
2026-06-21T09:42:01.6225272Z       "stages": {
2026-06-21T09:42:01.6225419Z         "doc": {
2026-06-21T09:42:01.6225592Z           "complete": true,
2026-06-21T09:42:01.6225754Z           "evidence": [
2026-06-21T09:42:01.6225911Z             {
2026-06-21T09:42:01.6226092Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6226249Z               "line": 588
2026-06-21T09:42:01.6226407Z             },
2026-06-21T09:42:01.6226555Z             {
2026-06-21T09:42:01.6226734Z               "path": "docs/STORAGE.md",
2026-06-21T09:42:01.6226903Z               "line": 49
2026-06-21T09:42:01.6227063Z             }
2026-06-21T09:42:01.6227222Z           ]
2026-06-21T09:42:01.6227363Z         },
2026-06-21T09:42:01.6227517Z         "impl": {
2026-06-21T09:42:01.6227683Z           "complete": true,
2026-06-21T09:42:01.6227851Z           "evidence": [
2026-06-21T09:42:01.6227998Z             {
2026-06-21T09:42:01.6228232Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.6228400Z               "line": 410
2026-06-21T09:42:01.6228551Z             },
2026-06-21T09:42:01.6228710Z             {
2026-06-21T09:42:01.6228908Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6229282Z               "line": 367
2026-06-21T09:42:01.6229450Z             },
2026-06-21T09:42:01.6229611Z             {
2026-06-21T09:42:01.6229849Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.6230008Z               "line": 293
2026-06-21T09:42:01.6230422Z             },
2026-06-21T09:42:01.6230579Z             {
2026-06-21T09:42:01.6230770Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6231032Z               "line": 1577
2026-06-21T09:42:01.6231189Z             }
2026-06-21T09:42:01.6231347Z           ]
2026-06-21T09:42:01.6231500Z         },
2026-06-21T09:42:01.6231648Z         "int": {
2026-06-21T09:42:01.6231808Z           "complete": false,
2026-06-21T09:42:01.6231979Z           "evidence": []
2026-06-21T09:42:01.6232130Z         },
2026-06-21T09:42:01.6232284Z         "unit": {
2026-06-21T09:42:01.6232449Z           "complete": true,
2026-06-21T09:42:01.6232613Z           "evidence": [
2026-06-21T09:42:01.6232773Z             {
2026-06-21T09:42:01.6232984Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.6233155Z               "line": 1163
2026-06-21T09:42:01.6233304Z             },
2026-06-21T09:42:01.6233461Z             {
2026-06-21T09:42:01.6233675Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6233834Z               "line": 944
2026-06-21T09:42:01.6233994Z             },
2026-06-21T09:42:01.6234149Z             {
2026-06-21T09:42:01.6234366Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6234523Z               "line": 1205
2026-06-21T09:42:01.6234677Z             },
2026-06-21T09:42:01.6234836Z             {
2026-06-21T09:42:01.6235026Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.6235189Z               "line": 659
2026-06-21T09:42:01.6235345Z             },
2026-06-21T09:42:01.6235499Z             {
2026-06-21T09:42:01.6235684Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6235842Z               "line": 8070
2026-06-21T09:42:01.6235994Z             }
2026-06-21T09:42:01.6236147Z           ]
2026-06-21T09:42:01.6236304Z         }
2026-06-21T09:42:01.6236457Z       }
2026-06-21T09:42:01.6236609Z     },
2026-06-21T09:42:01.6236758Z     {
2026-06-21T09:42:01.6236924Z       "id": "REQ-INST-15",
2026-06-21T09:42:01.6238058Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-21T09:42:01.6238224Z       "requiredStages": [
2026-06-21T09:42:01.6238378Z         "doc",
2026-06-21T09:42:01.6238529Z         "impl",
2026-06-21T09:42:01.6238683Z         "unit"
2026-06-21T09:42:01.6238839Z       ],
2026-06-21T09:42:01.6239073Z       "stages": {
2026-06-21T09:42:01.6239221Z         "doc": {
2026-06-21T09:42:01.6239392Z           "complete": true,
2026-06-21T09:42:01.6239568Z           "evidence": [
2026-06-21T09:42:01.6239719Z             {
2026-06-21T09:42:01.6240006Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-21T09:42:01.6240161Z               "line": 3
2026-06-21T09:42:01.6240315Z             }
2026-06-21T09:42:01.6240476Z           ]
2026-06-21T09:42:01.6240620Z         },
2026-06-21T09:42:01.6240796Z         "impl": {
2026-06-21T09:42:01.6240954Z           "complete": true,
2026-06-21T09:42:01.6241125Z           "evidence": [
2026-06-21T09:42:01.6241282Z             {
2026-06-21T09:42:01.6241503Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.6241664Z               "line": 353
2026-06-21T09:42:01.6241818Z             },
2026-06-21T09:42:01.6241973Z             {
2026-06-21T09:42:01.6242166Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:42:01.6242336Z               "line": 60
2026-06-21T09:42:01.6242493Z             },
2026-06-21T09:42:01.6242662Z             {
2026-06-21T09:42:01.6242901Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.6243062Z               "line": 368
2026-06-21T09:42:01.6243220Z             },
2026-06-21T09:42:01.6243372Z             {
2026-06-21T09:42:01.6243596Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.6243892Z               "line": 417
2026-06-21T09:42:01.6244040Z             },
2026-06-21T09:42:01.6244288Z             {
2026-06-21T09:42:01.6244488Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:42:01.6244651Z               "line": 19
2026-06-21T09:42:01.6244803Z             },
2026-06-21T09:42:01.6244959Z             {
2026-06-21T09:42:01.6245162Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:42:01.6245314Z               "line": 70
2026-06-21T09:42:01.6245477Z             },
2026-06-21T09:42:01.6245634Z             {
2026-06-21T09:42:01.6245834Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:42:01.6245997Z               "line": 96
2026-06-21T09:42:01.6246149Z             },
2026-06-21T09:42:01.6246303Z             {
2026-06-21T09:42:01.6246497Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:42:01.6246655Z               "line": 121
2026-06-21T09:42:01.6246807Z             },
2026-06-21T09:42:01.6246975Z             {
2026-06-21T09:42:01.6247183Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:42:01.6247346Z               "line": 172
2026-06-21T09:42:01.6247498Z             },
2026-06-21T09:42:01.6247643Z             {
2026-06-21T09:42:01.6247850Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.6248009Z               "line": 178
2026-06-21T09:42:01.6248169Z             },
2026-06-21T09:42:01.6248327Z             {
2026-06-21T09:42:01.6248513Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6248686Z               "line": 1469
2026-06-21T09:42:01.6248832Z             }
2026-06-21T09:42:01.6249070Z           ]
2026-06-21T09:42:01.6249210Z         },
2026-06-21T09:42:01.6249381Z         "int": {
2026-06-21T09:42:01.6249558Z           "complete": false,
2026-06-21T09:42:01.6249724Z           "evidence": []
2026-06-21T09:42:01.6249873Z         },
2026-06-21T09:42:01.6250024Z         "unit": {
2026-06-21T09:42:01.6250195Z           "complete": true,
2026-06-21T09:42:01.6250355Z           "evidence": [
2026-06-21T09:42:01.6250513Z             {
2026-06-21T09:42:01.6250741Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.6250904Z               "line": 577
2026-06-21T09:42:01.6251050Z             },
2026-06-21T09:42:01.6251194Z             {
2026-06-21T09:42:01.6251409Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.6251562Z               "line": 638
2026-06-21T09:42:01.6251714Z             },
2026-06-21T09:42:01.6251876Z             {
2026-06-21T09:42:01.6252068Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:42:01.6252224Z               "line": 213
2026-06-21T09:42:01.6252373Z             },
2026-06-21T09:42:01.6252529Z             {
2026-06-21T09:42:01.6252726Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:42:01.6252891Z               "line": 249
2026-06-21T09:42:01.6253058Z             },
2026-06-21T09:42:01.6253203Z             {
2026-06-21T09:42:01.6253404Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:42:01.6253556Z               "line": 262
2026-06-21T09:42:01.6253718Z             },
2026-06-21T09:42:01.6253870Z             {
2026-06-21T09:42:01.6254061Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:42:01.6254218Z               "line": 338
2026-06-21T09:42:01.6254367Z             },
2026-06-21T09:42:01.6254524Z             {
2026-06-21T09:42:01.6254719Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.6254876Z               "line": 690
2026-06-21T09:42:01.6255016Z             },
2026-06-21T09:42:01.6255173Z             {
2026-06-21T09:42:01.6255349Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6255504Z               "line": 8007
2026-06-21T09:42:01.6255662Z             },
2026-06-21T09:42:01.6255812Z             {
2026-06-21T09:42:01.6255999Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6256170Z               "line": 9837
2026-06-21T09:42:01.6256428Z             }
2026-06-21T09:42:01.6256581Z           ]
2026-06-21T09:42:01.6256733Z         }
2026-06-21T09:42:01.6256991Z       }
2026-06-21T09:42:01.6257143Z     },
2026-06-21T09:42:01.6257296Z     {
2026-06-21T09:42:01.6257453Z       "id": "REQ-INST-2",
2026-06-21T09:42:01.6257662Z       "title": "Per-node files, synced Psyche mind",
2026-06-21T09:42:01.6257841Z       "requiredStages": [
2026-06-21T09:42:01.6257991Z         "impl",
2026-06-21T09:42:01.6258146Z         "unit"
2026-06-21T09:42:01.6258296Z       ],
2026-06-21T09:42:01.6258458Z       "stages": {
2026-06-21T09:42:01.6258611Z         "doc": {
2026-06-21T09:42:01.6258783Z           "complete": false,
2026-06-21T09:42:01.6259034Z           "evidence": []
2026-06-21T09:42:01.6259188Z         },
2026-06-21T09:42:01.6259344Z         "impl": {
2026-06-21T09:42:01.6259508Z           "complete": true,
2026-06-21T09:42:01.6259674Z           "evidence": [
2026-06-21T09:42:01.6259818Z             {
2026-06-21T09:42:01.6260037Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.6260203Z               "line": 108
2026-06-21T09:42:01.6260356Z             },
2026-06-21T09:42:01.6260508Z             {
2026-06-21T09:42:01.6260703Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:42:01.6260858Z               "line": 28
2026-06-21T09:42:01.6261006Z             },
2026-06-21T09:42:01.6261163Z             {
2026-06-21T09:42:01.6261358Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:42:01.6261521Z               "line": 74
2026-06-21T09:42:01.6261674Z             },
2026-06-21T09:42:01.6261826Z             {
2026-06-21T09:42:01.6262017Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:42:01.6262188Z               "line": 96
2026-06-21T09:42:01.6262332Z             },
2026-06-21T09:42:01.6262493Z             {
2026-06-21T09:42:01.6262676Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:42:01.6262831Z               "line": 86
2026-06-21T09:42:01.6262981Z             },
2026-06-21T09:42:01.6263132Z             {
2026-06-21T09:42:01.6263334Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:42:01.6263498Z               "line": 118
2026-06-21T09:42:01.6263646Z             }
2026-06-21T09:42:01.6263796Z           ]
2026-06-21T09:42:01.6263950Z         },
2026-06-21T09:42:01.6264096Z         "int": {
2026-06-21T09:42:01.6264265Z           "complete": false,
2026-06-21T09:42:01.6264421Z           "evidence": []
2026-06-21T09:42:01.6264575Z         },
2026-06-21T09:42:01.6264730Z         "unit": {
2026-06-21T09:42:01.6264889Z           "complete": true,
2026-06-21T09:42:01.6265050Z           "evidence": [
2026-06-21T09:42:01.6265200Z             {
2026-06-21T09:42:01.6265403Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:42:01.6265562Z               "line": 250
2026-06-21T09:42:01.6265713Z             },
2026-06-21T09:42:01.6265868Z             {
2026-06-21T09:42:01.6266069Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:42:01.6266236Z               "line": 280
2026-06-21T09:42:01.6266391Z             }
2026-06-21T09:42:01.6266540Z           ]
2026-06-21T09:42:01.6266697Z         }
2026-06-21T09:42:01.6266841Z       }
2026-06-21T09:42:01.6266997Z     },
2026-06-21T09:42:01.6267151Z     {
2026-06-21T09:42:01.6267321Z       "id": "REQ-INST-3",
2026-06-21T09:42:01.6267570Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-21T09:42:01.6267737Z       "requiredStages": [
2026-06-21T09:42:01.6267889Z         "doc",
2026-06-21T09:42:01.6268038Z         "impl",
2026-06-21T09:42:01.6268194Z         "unit"
2026-06-21T09:42:01.6268343Z       ],
2026-06-21T09:42:01.6268504Z       "stages": {
2026-06-21T09:42:01.6268648Z         "doc": {
2026-06-21T09:42:01.6268809Z           "complete": true,
2026-06-21T09:42:01.6269057Z           "evidence": [
2026-06-21T09:42:01.6269204Z             {
2026-06-21T09:42:01.6269424Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-21T09:42:01.6269686Z               "line": 3
2026-06-21T09:42:01.6269838Z             }
2026-06-21T09:42:01.6269987Z           ]
2026-06-21T09:42:01.6270234Z         },
2026-06-21T09:42:01.6270383Z         "impl": {
2026-06-21T09:42:01.6270553Z           "complete": true,
2026-06-21T09:42:01.6270716Z           "evidence": [
2026-06-21T09:42:01.6270863Z             {
2026-06-21T09:42:01.6271083Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:42:01.6271244Z               "line": 59
2026-06-21T09:42:01.6271400Z             },
2026-06-21T09:42:01.6271551Z             {
2026-06-21T09:42:01.6271761Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.6271928Z               "line": 480
2026-06-21T09:42:01.6272076Z             },
2026-06-21T09:42:01.6272234Z             {
2026-06-21T09:42:01.6272442Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.6272611Z               "line": 254
2026-06-21T09:42:01.6272767Z             },
2026-06-21T09:42:01.6272921Z             {
2026-06-21T09:42:01.6273135Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.6273287Z               "line": 384
2026-06-21T09:42:01.6273445Z             },
2026-06-21T09:42:01.6273598Z             {
2026-06-21T09:42:01.6273803Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.6273964Z               "line": 418
2026-06-21T09:42:01.6274116Z             },
2026-06-21T09:42:01.6274276Z             {
2026-06-21T09:42:01.6274476Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T09:42:01.6274652Z               "line": 74
2026-06-21T09:42:01.6274801Z             },
2026-06-21T09:42:01.6274953Z             {
2026-06-21T09:42:01.6275173Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.6275329Z               "line": 234
2026-06-21T09:42:01.6275488Z             },
2026-06-21T09:42:01.6275639Z             {
2026-06-21T09:42:01.6275863Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.6276016Z               "line": 396
2026-06-21T09:42:01.6276169Z             },
2026-06-21T09:42:01.6276331Z             {
2026-06-21T09:42:01.6276530Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6276697Z               "line": 45
2026-06-21T09:42:01.6276852Z             },
2026-06-21T09:42:01.6277009Z             {
2026-06-21T09:42:01.6277214Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6277387Z               "line": 114
2026-06-21T09:42:01.6277543Z             },
2026-06-21T09:42:01.6277697Z             {
2026-06-21T09:42:01.6277901Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6278049Z               "line": 152
2026-06-21T09:42:01.6278206Z             },
2026-06-21T09:42:01.6278359Z             {
2026-06-21T09:42:01.6278568Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6278721Z               "line": 168
2026-06-21T09:42:01.6278878Z             },
2026-06-21T09:42:01.6279107Z             {
2026-06-21T09:42:01.6279300Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6279487Z               "line": 178
2026-06-21T09:42:01.6279636Z             },
2026-06-21T09:42:01.6279793Z             {
2026-06-21T09:42:01.6279998Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6280154Z               "line": 210
2026-06-21T09:42:01.6280299Z             },
2026-06-21T09:42:01.6280451Z             {
2026-06-21T09:42:01.6280666Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6280828Z               "line": 287
2026-06-21T09:42:01.6280971Z             },
2026-06-21T09:42:01.6281118Z             {
2026-06-21T09:42:01.6281318Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6281477Z               "line": 311
2026-06-21T09:42:01.6281633Z             },
2026-06-21T09:42:01.6281785Z             {
2026-06-21T09:42:01.6281983Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6282246Z               "line": 389
2026-06-21T09:42:01.6282397Z             },
2026-06-21T09:42:01.6282627Z             {
2026-06-21T09:42:01.6282842Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6282998Z               "line": 438
2026-06-21T09:42:01.6283147Z             },
2026-06-21T09:42:01.6283308Z             {
2026-06-21T09:42:01.6283504Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-21T09:42:01.6283666Z               "line": 37
2026-06-21T09:42:01.6283819Z             },
2026-06-21T09:42:01.6283971Z             {
2026-06-21T09:42:01.6284176Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6284330Z               "line": 62
2026-06-21T09:42:01.6284482Z             },
2026-06-21T09:42:01.6284633Z             {
2026-06-21T09:42:01.6284836Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.6284993Z               "line": 279
2026-06-21T09:42:01.6285156Z             },
2026-06-21T09:42:01.6285307Z             {
2026-06-21T09:42:01.6285499Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6285666Z               "line": 1848
2026-06-21T09:42:01.6285819Z             }
2026-06-21T09:42:01.6285976Z           ]
2026-06-21T09:42:01.6286128Z         },
2026-06-21T09:42:01.6286291Z         "int": {
2026-06-21T09:42:01.6286451Z           "complete": false,
2026-06-21T09:42:01.6286620Z           "evidence": []
2026-06-21T09:42:01.6286776Z         },
2026-06-21T09:42:01.6286931Z         "unit": {
2026-06-21T09:42:01.6287100Z           "complete": true,
2026-06-21T09:42:01.6287266Z           "evidence": [
2026-06-21T09:42:01.6287412Z             {
2026-06-21T09:42:01.6287622Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:42:01.6287779Z               "line": 360
2026-06-21T09:42:01.6287933Z             },
2026-06-21T09:42:01.6288084Z             {
2026-06-21T09:42:01.6288304Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.6288470Z               "line": 837
2026-06-21T09:42:01.6288624Z             },
2026-06-21T09:42:01.6288776Z             {
2026-06-21T09:42:01.6289066Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.6289225Z               "line": 894
2026-06-21T09:42:01.6289381Z             },
2026-06-21T09:42:01.6289540Z             {
2026-06-21T09:42:01.6289749Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.6289907Z               "line": 889
2026-06-21T09:42:01.6290066Z             },
2026-06-21T09:42:01.6290220Z             {
2026-06-21T09:42:01.6290419Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.6290578Z               "line": 1014
2026-06-21T09:42:01.6290734Z             },
2026-06-21T09:42:01.6290887Z             {
2026-06-21T09:42:01.6291117Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.6291283Z               "line": 1264
2026-06-21T09:42:01.6291437Z             },
2026-06-21T09:42:01.6291593Z             {
2026-06-21T09:42:01.6291803Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.6291960Z               "line": 1405
2026-06-21T09:42:01.6292109Z             },
2026-06-21T09:42:01.6292264Z             {
2026-06-21T09:42:01.6292468Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6292623Z               "line": 449
2026-06-21T09:42:01.6292778Z             },
2026-06-21T09:42:01.6292929Z             {
2026-06-21T09:42:01.6293135Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6293291Z               "line": 485
2026-06-21T09:42:01.6293450Z             },
2026-06-21T09:42:01.6293601Z             {
2026-06-21T09:42:01.6293797Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6293955Z               "line": 540
2026-06-21T09:42:01.6294112Z             },
2026-06-21T09:42:01.6294270Z             {
2026-06-21T09:42:01.6294469Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6294765Z               "line": 697
2026-06-21T09:42:01.6294918Z             },
2026-06-21T09:42:01.6295155Z             {
2026-06-21T09:42:01.6295364Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6295524Z               "line": 931
2026-06-21T09:42:01.6295682Z             },
2026-06-21T09:42:01.6295834Z             {
2026-06-21T09:42:01.6296036Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6296192Z               "line": 945
2026-06-21T09:42:01.6296345Z             },
2026-06-21T09:42:01.6296511Z             {
2026-06-21T09:42:01.6296722Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6296889Z               "line": 1290
2026-06-21T09:42:01.6297046Z             },
2026-06-21T09:42:01.6297199Z             {
2026-06-21T09:42:01.6297398Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.6297566Z               "line": 609
2026-06-21T09:42:01.6297722Z             },
2026-06-21T09:42:01.6297874Z             {
2026-06-21T09:42:01.6298072Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6298245Z               "line": 8031
2026-06-21T09:42:01.6298396Z             }
2026-06-21T09:42:01.6298549Z           ]
2026-06-21T09:42:01.6298701Z         }
2026-06-21T09:42:01.6298855Z       }
2026-06-21T09:42:01.6299117Z     },
2026-06-21T09:42:01.6299274Z     {
2026-06-21T09:42:01.6299456Z       "id": "REQ-INST-4",
2026-06-21T09:42:01.6299761Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-21T09:42:01.6299932Z       "requiredStages": [
2026-06-21T09:42:01.6300091Z         "impl",
2026-06-21T09:42:01.6300252Z         "unit"
2026-06-21T09:42:01.6300396Z       ],
2026-06-21T09:42:01.6300560Z       "stages": {
2026-06-21T09:42:01.6300713Z         "doc": {
2026-06-21T09:42:01.6300880Z           "complete": false,
2026-06-21T09:42:01.6301042Z           "evidence": []
2026-06-21T09:42:01.6301194Z         },
2026-06-21T09:42:01.6301358Z         "impl": {
2026-06-21T09:42:01.6301523Z           "complete": true,
2026-06-21T09:42:01.6301687Z           "evidence": [
2026-06-21T09:42:01.6301829Z             {
2026-06-21T09:42:01.6302044Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.6302210Z               "line": 385
2026-06-21T09:42:01.6302364Z             },
2026-06-21T09:42:01.6302515Z             {
2026-06-21T09:42:01.6302711Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6302876Z               "line": 202
2026-06-21T09:42:01.6303033Z             },
2026-06-21T09:42:01.6303179Z             {
2026-06-21T09:42:01.6303390Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6303552Z               "line": 234
2026-06-21T09:42:01.6303705Z             },
2026-06-21T09:42:01.6303861Z             {
2026-06-21T09:42:01.6304075Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6304239Z               "line": 274
2026-06-21T09:42:01.6304390Z             }
2026-06-21T09:42:01.6304544Z           ]
2026-06-21T09:42:01.6304691Z         },
2026-06-21T09:42:01.6304854Z         "int": {
2026-06-21T09:42:01.6305010Z           "complete": false,
2026-06-21T09:42:01.6305183Z           "evidence": []
2026-06-21T09:42:01.6305330Z         },
2026-06-21T09:42:01.6305474Z         "unit": {
2026-06-21T09:42:01.6305644Z           "complete": true,
2026-06-21T09:42:01.6305805Z           "evidence": [
2026-06-21T09:42:01.6305961Z             {
2026-06-21T09:42:01.6306171Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.6306337Z               "line": 889
2026-06-21T09:42:01.6306491Z             },
2026-06-21T09:42:01.6306642Z             {
2026-06-21T09:42:01.6306834Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6306991Z               "line": 561
2026-06-21T09:42:01.6307144Z             },
2026-06-21T09:42:01.6307301Z             {
2026-06-21T09:42:01.6307615Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6307778Z               "line": 668
2026-06-21T09:42:01.6308017Z             },
2026-06-21T09:42:01.6308169Z             {
2026-06-21T09:42:01.6308372Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6308537Z               "line": 750
2026-06-21T09:42:01.6308685Z             }
2026-06-21T09:42:01.6308843Z           ]
2026-06-21T09:42:01.6309086Z         }
2026-06-21T09:42:01.6309237Z       }
2026-06-21T09:42:01.6309396Z     },
2026-06-21T09:42:01.6309548Z     {
2026-06-21T09:42:01.6309706Z       "id": "REQ-INST-5",
2026-06-21T09:42:01.6309997Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-21T09:42:01.6310173Z       "requiredStages": [
2026-06-21T09:42:01.6310326Z         "impl",
2026-06-21T09:42:01.6310473Z         "unit",
2026-06-21T09:42:01.6310636Z         "int"
2026-06-21T09:42:01.6310782Z       ],
2026-06-21T09:42:01.6310946Z       "stages": {
2026-06-21T09:42:01.6311097Z         "doc": {
2026-06-21T09:42:01.6311268Z           "complete": false,
2026-06-21T09:42:01.6311435Z           "evidence": []
2026-06-21T09:42:01.6311583Z         },
2026-06-21T09:42:01.6311750Z         "impl": {
2026-06-21T09:42:01.6311908Z           "complete": true,
2026-06-21T09:42:01.6312060Z           "evidence": [
2026-06-21T09:42:01.6312213Z             {
2026-06-21T09:42:01.6312436Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T09:42:01.6312595Z               "line": 85
2026-06-21T09:42:01.6312737Z             },
2026-06-21T09:42:01.6312886Z             {
2026-06-21T09:42:01.6313080Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.6313244Z               "line": 68
2026-06-21T09:42:01.6313394Z             },
2026-06-21T09:42:01.6313551Z             {
2026-06-21T09:42:01.6313753Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.6313902Z               "line": 99
2026-06-21T09:42:01.6314064Z             },
2026-06-21T09:42:01.6314207Z             {
2026-06-21T09:42:01.6314416Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.6314579Z               "line": 183
2026-06-21T09:42:01.6314736Z             },
2026-06-21T09:42:01.6314894Z             {
2026-06-21T09:42:01.6315075Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.6315247Z               "line": 314
2026-06-21T09:42:01.6315400Z             }
2026-06-21T09:42:01.6315556Z           ]
2026-06-21T09:42:01.6315705Z         },
2026-06-21T09:42:01.6315861Z         "int": {
2026-06-21T09:42:01.6316044Z           "complete": true,
2026-06-21T09:42:01.6316199Z           "evidence": [
2026-06-21T09:42:01.6316361Z             {
2026-06-21T09:42:01.6316583Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:42:01.6316745Z               "line": 156
2026-06-21T09:42:01.6316897Z             },
2026-06-21T09:42:01.6317056Z             {
2026-06-21T09:42:01.6317264Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T09:42:01.6317432Z               "line": 145
2026-06-21T09:42:01.6317584Z             },
2026-06-21T09:42:01.6317737Z             {
2026-06-21T09:42:01.6317942Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.6318094Z               "line": 707
2026-06-21T09:42:01.6318257Z             },
2026-06-21T09:42:01.6318409Z             {
2026-06-21T09:42:01.6318615Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.6318790Z               "line": 1069
2026-06-21T09:42:01.6319027Z             }
2026-06-21T09:42:01.6319187Z           ]
2026-06-21T09:42:01.6319341Z         },
2026-06-21T09:42:01.6319507Z         "unit": {
2026-06-21T09:42:01.6319675Z           "complete": true,
2026-06-21T09:42:01.6319831Z           "evidence": [
2026-06-21T09:42:01.6319985Z             {
2026-06-21T09:42:01.6320180Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.6320332Z               "line": 552
2026-06-21T09:42:01.6320586Z             },
2026-06-21T09:42:01.6320733Z             {
2026-06-21T09:42:01.6320934Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.6321178Z               "line": 595
2026-06-21T09:42:01.6321329Z             },
2026-06-21T09:42:01.6321483Z             {
2026-06-21T09:42:01.6321695Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T09:42:01.6321857Z               "line": 219
2026-06-21T09:42:01.6322009Z             }
2026-06-21T09:42:01.6322167Z           ]
2026-06-21T09:42:01.6322320Z         }
2026-06-21T09:42:01.6322463Z       }
2026-06-21T09:42:01.6322616Z     },
2026-06-21T09:42:01.6322768Z     {
2026-06-21T09:42:01.6322925Z       "id": "REQ-INST-6",
2026-06-21T09:42:01.6323249Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-21T09:42:01.6323427Z       "requiredStages": [
2026-06-21T09:42:01.6323578Z         "impl",
2026-06-21T09:42:01.6323737Z         "unit",
2026-06-21T09:42:01.6323883Z         "int"
2026-06-21T09:42:01.6324030Z       ],
2026-06-21T09:42:01.6324186Z       "stages": {
2026-06-21T09:42:01.6324342Z         "doc": {
2026-06-21T09:42:01.6324511Z           "complete": true,
2026-06-21T09:42:01.6324662Z           "evidence": [
2026-06-21T09:42:01.6324820Z             {
2026-06-21T09:42:01.6324991Z               "path": "docs/DEFERRED.md",
2026-06-21T09:42:01.6325159Z               "line": 13
2026-06-21T09:42:01.6325301Z             }
2026-06-21T09:42:01.6325454Z           ]
2026-06-21T09:42:01.6325611Z         },
2026-06-21T09:42:01.6325754Z         "impl": {
2026-06-21T09:42:01.6325926Z           "complete": true,
2026-06-21T09:42:01.6326083Z           "evidence": [
2026-06-21T09:42:01.6326241Z             {
2026-06-21T09:42:01.6326445Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.6326604Z               "line": 391
2026-06-21T09:42:01.6326750Z             },
2026-06-21T09:42:01.6326897Z             {
2026-06-21T09:42:01.6327105Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T09:42:01.6327267Z               "line": 27
2026-06-21T09:42:01.6327424Z             },
2026-06-21T09:42:01.6327582Z             {
2026-06-21T09:42:01.6327777Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T09:42:01.6327941Z               "line": 73
2026-06-21T09:42:01.6328091Z             },
2026-06-21T09:42:01.6328250Z             {
2026-06-21T09:42:01.6328445Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T09:42:01.6328617Z               "line": 182
2026-06-21T09:42:01.6328769Z             },
2026-06-21T09:42:01.6328927Z             {
2026-06-21T09:42:01.6329200Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6329369Z               "line": 426
2026-06-21T09:42:01.6329526Z             },
2026-06-21T09:42:01.6329677Z             {
2026-06-21T09:42:01.6329882Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T09:42:01.6333706Z               "line": 31
2026-06-21T09:42:01.6333929Z             },
2026-06-21T09:42:01.6334105Z             {
2026-06-21T09:42:01.6334330Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.6334505Z               "line": 202
2026-06-21T09:42:01.6334657Z             },
2026-06-21T09:42:01.6334812Z             {
2026-06-21T09:42:01.6335023Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.6335184Z               "line": 83
2026-06-21T09:42:01.6335347Z             },
2026-06-21T09:42:01.6335498Z             {
2026-06-21T09:42:01.6335694Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6335847Z               "line": 1849
2026-06-21T09:42:01.6336004Z             },
2026-06-21T09:42:01.6336152Z             {
2026-06-21T09:42:01.6336352Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.6336530Z               "line": 179
2026-06-21T09:42:01.6336685Z             },
2026-06-21T09:42:01.6336845Z             {
2026-06-21T09:42:01.6337039Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.6337343Z               "line": 215
2026-06-21T09:42:01.6337501Z             }
2026-06-21T09:42:01.6337642Z           ]
2026-06-21T09:42:01.6337914Z         },
2026-06-21T09:42:01.6338061Z         "int": {
2026-06-21T09:42:01.6338233Z           "complete": true,
2026-06-21T09:42:01.6338390Z           "evidence": [
2026-06-21T09:42:01.6338547Z             {
2026-06-21T09:42:01.6338767Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.6338929Z               "line": 721
2026-06-21T09:42:01.6339191Z             },
2026-06-21T09:42:01.6339334Z             {
2026-06-21T09:42:01.6339596Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.6339765Z               "line": 1114
2026-06-21T09:42:01.6339920Z             },
2026-06-21T09:42:01.6340072Z             {
2026-06-21T09:42:01.6340261Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.6340432Z               "line": 726
2026-06-21T09:42:01.6340584Z             }
2026-06-21T09:42:01.6340743Z           ]
2026-06-21T09:42:01.6340889Z         },
2026-06-21T09:42:01.6341048Z         "unit": {
2026-06-21T09:42:01.6341223Z           "complete": true,
2026-06-21T09:42:01.6341377Z           "evidence": [
2026-06-21T09:42:01.6341533Z             {
2026-06-21T09:42:01.6341729Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.6341896Z               "line": 661
2026-06-21T09:42:01.6342035Z             },
2026-06-21T09:42:01.6342187Z             {
2026-06-21T09:42:01.6342401Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.6342564Z               "line": 899
2026-06-21T09:42:01.6342716Z             },
2026-06-21T09:42:01.6342867Z             {
2026-06-21T09:42:01.6343073Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T09:42:01.6343235Z               "line": 66
2026-06-21T09:42:01.6343388Z             },
2026-06-21T09:42:01.6343540Z             {
2026-06-21T09:42:01.6343736Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.6343898Z               "line": 297
2026-06-21T09:42:01.6344050Z             },
2026-06-21T09:42:01.6344213Z             {
2026-06-21T09:42:01.6344408Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.6344566Z               "line": 203
2026-06-21T09:42:01.6344727Z             }
2026-06-21T09:42:01.6344881Z           ]
2026-06-21T09:42:01.6345032Z         }
2026-06-21T09:42:01.6345189Z       }
2026-06-21T09:42:01.6345344Z     },
2026-06-21T09:42:01.6345492Z     {
2026-06-21T09:42:01.6345654Z       "id": "REQ-INST-7",
2026-06-21T09:42:01.6345903Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-21T09:42:01.6346068Z       "requiredStages": [
2026-06-21T09:42:01.6346231Z         "impl",
2026-06-21T09:42:01.6346383Z         "unit",
2026-06-21T09:42:01.6346541Z         "int"
2026-06-21T09:42:01.6346692Z       ],
2026-06-21T09:42:01.6346856Z       "stages": {
2026-06-21T09:42:01.6347007Z         "doc": {
2026-06-21T09:42:01.6347185Z           "complete": false,
2026-06-21T09:42:01.6347346Z           "evidence": []
2026-06-21T09:42:01.6347495Z         },
2026-06-21T09:42:01.6347656Z         "impl": {
2026-06-21T09:42:01.6347820Z           "complete": true,
2026-06-21T09:42:01.6347979Z           "evidence": [
2026-06-21T09:42:01.6348141Z             {
2026-06-21T09:42:01.6348344Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.6348512Z               "line": 436
2026-06-21T09:42:01.6348663Z             },
2026-06-21T09:42:01.6348822Z             {
2026-06-21T09:42:01.6349108Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.6349264Z               "line": 27
2026-06-21T09:42:01.6349437Z             },
2026-06-21T09:42:01.6349584Z             {
2026-06-21T09:42:01.6349794Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.6349947Z               "line": 207
2026-06-21T09:42:01.6350094Z             },
2026-06-21T09:42:01.6350247Z             {
2026-06-21T09:42:01.6350565Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.6350731Z               "line": 344
2026-06-21T09:42:01.6350973Z             },
2026-06-21T09:42:01.6351130Z             {
2026-06-21T09:42:01.6351341Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-21T09:42:01.6351493Z               "line": 59
2026-06-21T09:42:01.6351646Z             },
2026-06-21T09:42:01.6351788Z             {
2026-06-21T09:42:01.6352008Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6352160Z               "line": 41
2026-06-21T09:42:01.6352318Z             },
2026-06-21T09:42:01.6352470Z             {
2026-06-21T09:42:01.6352680Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:42:01.6352848Z               "line": 27
2026-06-21T09:42:01.6352999Z             },
2026-06-21T09:42:01.6353149Z             {
2026-06-21T09:42:01.6353361Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:42:01.6353528Z               "line": 119
2026-06-21T09:42:01.6353676Z             },
2026-06-21T09:42:01.6353833Z             {
2026-06-21T09:42:01.6354052Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:42:01.6354206Z               "line": 134
2026-06-21T09:42:01.6354348Z             },
2026-06-21T09:42:01.6354502Z             {
2026-06-21T09:42:01.6354710Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:42:01.6354854Z               "line": 139
2026-06-21T09:42:01.6355006Z             }
2026-06-21T09:42:01.6355159Z           ]
2026-06-21T09:42:01.6355302Z         },
2026-06-21T09:42:01.6355451Z         "int": {
2026-06-21T09:42:01.6355615Z           "complete": true,
2026-06-21T09:42:01.6355778Z           "evidence": [
2026-06-21T09:42:01.6355923Z             {
2026-06-21T09:42:01.6356139Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T09:42:01.6356299Z               "line": 145
2026-06-21T09:42:01.6356448Z             },
2026-06-21T09:42:01.6356600Z             {
2026-06-21T09:42:01.6356801Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.6356967Z               "line": 665
2026-06-21T09:42:01.6357125Z             },
2026-06-21T09:42:01.6357277Z             {
2026-06-21T09:42:01.6357492Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.6357645Z               "line": 964
2026-06-21T09:42:01.6357802Z             }
2026-06-21T09:42:01.6357950Z           ]
2026-06-21T09:42:01.6358111Z         },
2026-06-21T09:42:01.6358265Z         "unit": {
2026-06-21T09:42:01.6358436Z           "complete": true,
2026-06-21T09:42:01.6358597Z           "evidence": [
2026-06-21T09:42:01.6358748Z             {
2026-06-21T09:42:01.6359029Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.6359190Z               "line": 1134
2026-06-21T09:42:01.6359349Z             },
2026-06-21T09:42:01.6359500Z             {
2026-06-21T09:42:01.6359721Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.6359882Z               "line": 1521
2026-06-21T09:42:01.6360030Z             },
2026-06-21T09:42:01.6360182Z             {
2026-06-21T09:42:01.6360397Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T09:42:01.6360555Z               "line": 84
2026-06-21T09:42:01.6360706Z             },
2026-06-21T09:42:01.6360856Z             {
2026-06-21T09:42:01.6361068Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6361216Z               "line": 812
2026-06-21T09:42:01.6361381Z             },
2026-06-21T09:42:01.6361529Z             {
2026-06-21T09:42:01.6361738Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6361901Z               "line": 823
2026-06-21T09:42:01.6362043Z             },
2026-06-21T09:42:01.6362197Z             {
2026-06-21T09:42:01.6362401Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6362554Z               "line": 838
2026-06-21T09:42:01.6362817Z             },
2026-06-21T09:42:01.6362973Z             {
2026-06-21T09:42:01.6363179Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:42:01.6363432Z               "line": 166
2026-06-21T09:42:01.6363588Z             },
2026-06-21T09:42:01.6363733Z             {
2026-06-21T09:42:01.6363945Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:42:01.6364108Z               "line": 181
2026-06-21T09:42:01.6364264Z             },
2026-06-21T09:42:01.6364423Z             {
2026-06-21T09:42:01.6364631Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:42:01.6364794Z               "line": 214
2026-06-21T09:42:01.6364946Z             }
2026-06-21T09:42:01.6365090Z           ]
2026-06-21T09:42:01.6365237Z         }
2026-06-21T09:42:01.6365386Z       }
2026-06-21T09:42:01.6365542Z     },
2026-06-21T09:42:01.6365682Z     {
2026-06-21T09:42:01.6365842Z       "id": "REQ-INST-8",
2026-06-21T09:42:01.6366095Z       "title": "Remote-control mode distinct from local operation",
2026-06-21T09:42:01.6366276Z       "requiredStages": [
2026-06-21T09:42:01.6366427Z         "impl",
2026-06-21T09:42:01.6366588Z         "unit",
2026-06-21T09:42:01.6366751Z         "int"
2026-06-21T09:42:01.6366898Z       ],
2026-06-21T09:42:01.6367056Z       "stages": {
2026-06-21T09:42:01.6367207Z         "doc": {
2026-06-21T09:42:01.6367380Z           "complete": false,
2026-06-21T09:42:01.6367537Z           "evidence": []
2026-06-21T09:42:01.6367695Z         },
2026-06-21T09:42:01.6367847Z         "impl": {
2026-06-21T09:42:01.6368019Z           "complete": true,
2026-06-21T09:42:01.6368176Z           "evidence": [
2026-06-21T09:42:01.6368319Z             {
2026-06-21T09:42:01.6368515Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:42:01.6368671Z               "line": 104
2026-06-21T09:42:01.6368830Z             },
2026-06-21T09:42:01.6369043Z             {
2026-06-21T09:42:01.6369243Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:42:01.6369412Z               "line": 351
2026-06-21T09:42:01.6369561Z             },
2026-06-21T09:42:01.6369712Z             {
2026-06-21T09:42:01.6369923Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:42:01.6370079Z               "line": 391
2026-06-21T09:42:01.6370233Z             },
2026-06-21T09:42:01.6370389Z             {
2026-06-21T09:42:01.6370595Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:42:01.6370752Z               "line": 62
2026-06-21T09:42:01.6370910Z             }
2026-06-21T09:42:01.6371058Z           ]
2026-06-21T09:42:01.6371206Z         },
2026-06-21T09:42:01.6371368Z         "int": {
2026-06-21T09:42:01.6371535Z           "complete": true,
2026-06-21T09:42:01.6371695Z           "evidence": [
2026-06-21T09:42:01.6371847Z             {
2026-06-21T09:42:01.6372070Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:42:01.6372223Z               "line": 415
2026-06-21T09:42:01.6372380Z             },
2026-06-21T09:42:01.6372538Z             {
2026-06-21T09:42:01.6372738Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.6372908Z               "line": 1028
2026-06-21T09:42:01.6373062Z             }
2026-06-21T09:42:01.6373219Z           ]
2026-06-21T09:42:01.6373368Z         },
2026-06-21T09:42:01.6373520Z         "unit": {
2026-06-21T09:42:01.6373692Z           "complete": true,
2026-06-21T09:42:01.6373853Z           "evidence": [
2026-06-21T09:42:01.6374007Z             {
2026-06-21T09:42:01.6374210Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.6374374Z               "line": 366
2026-06-21T09:42:01.6374524Z             },
2026-06-21T09:42:01.6374682Z             {
2026-06-21T09:42:01.6374905Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.6375054Z               "line": 633
2026-06-21T09:42:01.6375210Z             },
2026-06-21T09:42:01.6375359Z             {
2026-06-21T09:42:01.6375559Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:42:01.6375826Z               "line": 116
2026-06-21T09:42:01.6375979Z             },
2026-06-21T09:42:01.6376223Z             {
2026-06-21T09:42:01.6376422Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:42:01.6376576Z               "line": 160
2026-06-21T09:42:01.6376722Z             }
2026-06-21T09:42:01.6376879Z           ]
2026-06-21T09:42:01.6377029Z         }
2026-06-21T09:42:01.6377181Z       }
2026-06-21T09:42:01.6377325Z     },
2026-06-21T09:42:01.6377477Z     {
2026-06-21T09:42:01.6377640Z       "id": "REQ-INST-9",
2026-06-21T09:42:01.6377950Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-21T09:42:01.6378126Z       "requiredStages": [
2026-06-21T09:42:01.6378274Z         "impl",
2026-06-21T09:42:01.6378426Z         "unit"
2026-06-21T09:42:01.6378588Z       ],
2026-06-21T09:42:01.6378731Z       "stages": {
2026-06-21T09:42:01.6378879Z         "doc": {
2026-06-21T09:42:01.6379129Z           "complete": false,
2026-06-21T09:42:01.6379299Z           "evidence": []
2026-06-21T09:42:01.6379448Z         },
2026-06-21T09:42:01.6379627Z         "impl": {
2026-06-21T09:42:01.6379793Z           "complete": true,
2026-06-21T09:42:01.6379939Z           "evidence": [
2026-06-21T09:42:01.6380097Z             {
2026-06-21T09:42:01.6380301Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6380464Z               "line": 449
2026-06-21T09:42:01.6380616Z             }
2026-06-21T09:42:01.6380765Z           ]
2026-06-21T09:42:01.6380912Z         },
2026-06-21T09:42:01.6381065Z         "int": {
2026-06-21T09:42:01.6381231Z           "complete": false,
2026-06-21T09:42:01.6381380Z           "evidence": []
2026-06-21T09:42:01.6381536Z         },
2026-06-21T09:42:01.6381686Z         "unit": {
2026-06-21T09:42:01.6381846Z           "complete": true,
2026-06-21T09:42:01.6382010Z           "evidence": [
2026-06-21T09:42:01.6382151Z             {
2026-06-21T09:42:01.6382360Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6382524Z               "line": 1397
2026-06-21T09:42:01.6382683Z             },
2026-06-21T09:42:01.6382834Z             {
2026-06-21T09:42:01.6383040Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6383202Z               "line": 1406
2026-06-21T09:42:01.6383346Z             },
2026-06-21T09:42:01.6383502Z             {
2026-06-21T09:42:01.6383703Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6383869Z               "line": 1422
2026-06-21T09:42:01.6384022Z             },
2026-06-21T09:42:01.6384170Z             {
2026-06-21T09:42:01.6384379Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6384539Z               "line": 1434
2026-06-21T09:42:01.6384685Z             },
2026-06-21T09:42:01.6384839Z             {
2026-06-21T09:42:01.6385046Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.6385204Z               "line": 1454
2026-06-21T09:42:01.6385356Z             }
2026-06-21T09:42:01.6385514Z           ]
2026-06-21T09:42:01.6385667Z         }
2026-06-21T09:42:01.6385819Z       }
2026-06-21T09:42:01.6385972Z     },
2026-06-21T09:42:01.6386124Z     {
2026-06-21T09:42:01.6386291Z       "id": "REQ-INSTALL-1",
2026-06-21T09:42:01.6386610Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-21T09:42:01.6386774Z       "requiredStages": [
2026-06-21T09:42:01.6386924Z         "doc",
2026-06-21T09:42:01.6387083Z         "impl",
2026-06-21T09:42:01.6387230Z         "int"
2026-06-21T09:42:01.6387391Z       ],
2026-06-21T09:42:01.6387538Z       "stages": {
2026-06-21T09:42:01.6387688Z         "doc": {
2026-06-21T09:42:01.6387862Z           "complete": true,
2026-06-21T09:42:01.6388018Z           "evidence": [
2026-06-21T09:42:01.6388171Z             {
2026-06-21T09:42:01.6388337Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6388505Z               "line": 754
2026-06-21T09:42:01.6388758Z             }
2026-06-21T09:42:01.6388905Z           ]
2026-06-21T09:42:01.6389148Z         },
2026-06-21T09:42:01.6389416Z         "impl": {
2026-06-21T09:42:01.6389577Z           "complete": true,
2026-06-21T09:42:01.6389736Z           "evidence": [
2026-06-21T09:42:01.6389892Z             {
2026-06-21T09:42:01.6390088Z               "path": "installer/install.ps1",
2026-06-21T09:42:01.6390248Z               "line": 57
2026-06-21T09:42:01.6390410Z             },
2026-06-21T09:42:01.6390556Z             {
2026-06-21T09:42:01.6390748Z               "path": "installer/install.sh",
2026-06-21T09:42:01.6390904Z               "line": 52
2026-06-21T09:42:01.6391058Z             }
2026-06-21T09:42:01.6391219Z           ]
2026-06-21T09:42:01.6391367Z         },
2026-06-21T09:42:01.6391529Z         "int": {
2026-06-21T09:42:01.6391682Z           "complete": true,
2026-06-21T09:42:01.6391848Z           "evidence": [
2026-06-21T09:42:01.6391992Z             {
2026-06-21T09:42:01.6392212Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T09:42:01.6392382Z               "line": 21
2026-06-21T09:42:01.6392527Z             }
2026-06-21T09:42:01.6392678Z           ]
2026-06-21T09:42:01.6392825Z         },
2026-06-21T09:42:01.6392981Z         "unit": {
2026-06-21T09:42:01.6393152Z           "complete": false,
2026-06-21T09:42:01.6393315Z           "evidence": []
2026-06-21T09:42:01.6393467Z         }
2026-06-21T09:42:01.6393610Z       }
2026-06-21T09:42:01.6393762Z     },
2026-06-21T09:42:01.6393910Z     {
2026-06-21T09:42:01.6394086Z       "id": "REQ-INSTALL-10",
2026-06-21T09:42:01.6396137Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-21T09:42:01.6396321Z       "requiredStages": [
2026-06-21T09:42:01.6396479Z         "impl",
2026-06-21T09:42:01.6396636Z         "unit"
2026-06-21T09:42:01.6396785Z       ],
2026-06-21T09:42:01.6396941Z       "stages": {
2026-06-21T09:42:01.6397109Z         "doc": {
2026-06-21T09:42:01.6397280Z           "complete": false,
2026-06-21T09:42:01.6397443Z           "evidence": []
2026-06-21T09:42:01.6397600Z         },
2026-06-21T09:42:01.6397748Z         "impl": {
2026-06-21T09:42:01.6397918Z           "complete": true,
2026-06-21T09:42:01.6398084Z           "evidence": [
2026-06-21T09:42:01.6398240Z             {
2026-06-21T09:42:01.6398436Z               "path": "installer/install.ps1",
2026-06-21T09:42:01.6398588Z               "line": 191
2026-06-21T09:42:01.6398736Z             }
2026-06-21T09:42:01.6398888Z           ]
2026-06-21T09:42:01.6399117Z         },
2026-06-21T09:42:01.6399266Z         "int": {
2026-06-21T09:42:01.6399442Z           "complete": false,
2026-06-21T09:42:01.6399619Z           "evidence": []
2026-06-21T09:42:01.6399775Z         },
2026-06-21T09:42:01.6399929Z         "unit": {
2026-06-21T09:42:01.6400099Z           "complete": true,
2026-06-21T09:42:01.6400272Z           "evidence": [
2026-06-21T09:42:01.6400414Z             {
2026-06-21T09:42:01.6400634Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T09:42:01.6400799Z               "line": 211
2026-06-21T09:42:01.6400956Z             }
2026-06-21T09:42:01.6401107Z           ]
2026-06-21T09:42:01.6401251Z         }
2026-06-21T09:42:01.6401398Z       }
2026-06-21T09:42:01.6401542Z     },
2026-06-21T09:42:01.6401698Z     {
2026-06-21T09:42:01.6401876Z       "id": "REQ-INSTALL-11",
2026-06-21T09:42:01.6404527Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-21T09:42:01.6404890Z       "requiredStages": [
2026-06-21T09:42:01.6405044Z         "doc",
2026-06-21T09:42:01.6405205Z         "impl",
2026-06-21T09:42:01.6405358Z         "unit"
2026-06-21T09:42:01.6405509Z       ],
2026-06-21T09:42:01.6405668Z       "stages": {
2026-06-21T09:42:01.6405814Z         "doc": {
2026-06-21T09:42:01.6405983Z           "complete": true,
2026-06-21T09:42:01.6406143Z           "evidence": [
2026-06-21T09:42:01.6406300Z             {
2026-06-21T09:42:01.6406472Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6406625Z               "line": 138
2026-06-21T09:42:01.6406782Z             },
2026-06-21T09:42:01.6406930Z             {
2026-06-21T09:42:01.6407125Z               "path": "docs/MANIFEST.md",
2026-06-21T09:42:01.6407279Z               "line": 82
2026-06-21T09:42:01.6407435Z             }
2026-06-21T09:42:01.6407598Z           ]
2026-06-21T09:42:01.6407745Z         },
2026-06-21T09:42:01.6407908Z         "impl": {
2026-06-21T09:42:01.6408078Z           "complete": true,
2026-06-21T09:42:01.6408242Z           "evidence": [
2026-06-21T09:42:01.6408383Z             {
2026-06-21T09:42:01.6408597Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.6408762Z               "line": 223
2026-06-21T09:42:01.6408925Z             },
2026-06-21T09:42:01.6409167Z             {
2026-06-21T09:42:01.6409386Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.6409554Z               "line": 99
2026-06-21T09:42:01.6409710Z             },
2026-06-21T09:42:01.6409864Z             {
2026-06-21T09:42:01.6410078Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.6410236Z               "line": 117
2026-06-21T09:42:01.6410397Z             },
2026-06-21T09:42:01.6410546Z             {
2026-06-21T09:42:01.6410756Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:42:01.6410917Z               "line": 332
2026-06-21T09:42:01.6411056Z             },
2026-06-21T09:42:01.6411213Z             {
2026-06-21T09:42:01.6411407Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:42:01.6411586Z               "line": 88
2026-06-21T09:42:01.6411739Z             },
2026-06-21T09:42:01.6411953Z             {
2026-06-21T09:42:01.6412163Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:42:01.6475215Z               "line": 104
2026-06-21T09:42:01.6475486Z             },
2026-06-21T09:42:01.6475700Z             {
2026-06-21T09:42:01.6476039Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.6476263Z               "line": 297
2026-06-21T09:42:01.6476482Z             },
2026-06-21T09:42:01.6476698Z             {
2026-06-21T09:42:01.6477032Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.6477258Z               "line": 332
2026-06-21T09:42:01.6477471Z             },
2026-06-21T09:42:01.6477686Z             {
2026-06-21T09:42:01.6477976Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.6478195Z               "line": 523
2026-06-21T09:42:01.6478411Z             },
2026-06-21T09:42:01.6478659Z             {
2026-06-21T09:42:01.6479073Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.6479298Z               "line": 546
2026-06-21T09:42:01.6479507Z             },
2026-06-21T09:42:01.6479716Z             {
2026-06-21T09:42:01.6480026Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.6480279Z               "line": 561
2026-06-21T09:42:01.6480483Z             },
2026-06-21T09:42:01.6481432Z             {
2026-06-21T09:42:01.6481718Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.6481933Z               "line": 492
2026-06-21T09:42:01.6482395Z             }
2026-06-21T09:42:01.6482584Z           ]
2026-06-21T09:42:01.6482769Z         },
2026-06-21T09:42:01.6483074Z         "int": {
2026-06-21T09:42:01.6483321Z           "complete": false,
2026-06-21T09:42:01.6483499Z           "evidence": []
2026-06-21T09:42:01.6483650Z         },
2026-06-21T09:42:01.6483804Z         "unit": {
2026-06-21T09:42:01.6483965Z           "complete": true,
2026-06-21T09:42:01.6484138Z           "evidence": [
2026-06-21T09:42:01.6484280Z             {
2026-06-21T09:42:01.6484518Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.6484715Z               "line": 799
2026-06-21T09:42:01.6484881Z             },
2026-06-21T09:42:01.6485030Z             {
2026-06-21T09:42:01.6485266Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.6485433Z               "line": 811
2026-06-21T09:42:01.6485598Z             },
2026-06-21T09:42:01.6485751Z             {
2026-06-21T09:42:01.6485980Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.6486151Z               "line": 820
2026-06-21T09:42:01.6486319Z             }
2026-06-21T09:42:01.6486471Z           ]
2026-06-21T09:42:01.6486638Z         }
2026-06-21T09:42:01.6486795Z       }
2026-06-21T09:42:01.6486967Z     },
2026-06-21T09:42:01.6487119Z     {
2026-06-21T09:42:01.6487306Z       "id": "REQ-INSTALL-12",
2026-06-21T09:42:01.6491944Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-21T09:42:01.6492207Z       "requiredStages": [
2026-06-21T09:42:01.6492413Z         "doc",
2026-06-21T09:42:01.6492617Z         "impl",
2026-06-21T09:42:01.6492822Z         "unit",
2026-06-21T09:42:01.6493016Z         "int"
2026-06-21T09:42:01.6493215Z       ],
2026-06-21T09:42:01.6493425Z       "stages": {
2026-06-21T09:42:01.6493629Z         "doc": {
2026-06-21T09:42:01.6495470Z           "complete": true,
2026-06-21T09:42:01.6495783Z           "evidence": [
2026-06-21T09:42:01.6495983Z             {
2026-06-21T09:42:01.6496225Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6496420Z               "line": 185
2026-06-21T09:42:01.6496644Z             }
2026-06-21T09:42:01.6496869Z           ]
2026-06-21T09:42:01.6497082Z         },
2026-06-21T09:42:01.6497297Z         "impl": {
2026-06-21T09:42:01.6497518Z           "complete": true,
2026-06-21T09:42:01.6497751Z           "evidence": [
2026-06-21T09:42:01.6497951Z             {
2026-06-21T09:42:01.6498233Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.6498451Z               "line": 27
2026-06-21T09:42:01.6498677Z             },
2026-06-21T09:42:01.6498902Z             {
2026-06-21T09:42:01.6499268Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.6499502Z               "line": 223
2026-06-21T09:42:01.6499717Z             },
2026-06-21T09:42:01.6499945Z             {
2026-06-21T09:42:01.6500203Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6500442Z               "line": 5677
2026-06-21T09:42:01.6500656Z             }
2026-06-21T09:42:01.6500885Z           ]
2026-06-21T09:42:01.6501119Z         },
2026-06-21T09:42:01.6501356Z         "int": {
2026-06-21T09:42:01.6501786Z           "complete": true,
2026-06-21T09:42:01.6502029Z           "evidence": [
2026-06-21T09:42:01.6502276Z             {
2026-06-21T09:42:01.6502706Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T09:42:01.6502954Z               "line": 19
2026-06-21T09:42:01.6503191Z             }
2026-06-21T09:42:01.6503425Z           ]
2026-06-21T09:42:01.6503704Z         },
2026-06-21T09:42:01.6504004Z         "unit": {
2026-06-21T09:42:01.6504319Z           "complete": true,
2026-06-21T09:42:01.6504624Z           "evidence": [
2026-06-21T09:42:01.6504905Z             {
2026-06-21T09:42:01.6505267Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.6505568Z               "line": 395
2026-06-21T09:42:01.6505869Z             },
2026-06-21T09:42:01.6506165Z             {
2026-06-21T09:42:01.6506520Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.6506823Z               "line": 421
2026-06-21T09:42:01.6507119Z             },
2026-06-21T09:42:01.6507430Z             {
2026-06-21T09:42:01.6507792Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.6508111Z               "line": 440
2026-06-21T09:42:01.6508398Z             },
2026-06-21T09:42:01.6508684Z             {
2026-06-21T09:42:01.6509106Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.6509400Z               "line": 475
2026-06-21T09:42:01.6509696Z             },
2026-06-21T09:42:01.6509991Z             {
2026-06-21T09:42:01.6510339Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6510664Z               "line": 8665
2026-06-21T09:42:01.6510969Z             }
2026-06-21T09:42:01.6511294Z           ]
2026-06-21T09:42:01.6511599Z         }
2026-06-21T09:42:01.6511916Z       }
2026-06-21T09:42:01.6512216Z     },
2026-06-21T09:42:01.6512527Z     {
2026-06-21T09:42:01.6512846Z       "id": "REQ-INSTALL-2",
2026-06-21T09:42:01.6513247Z       "title": "Marketplace-repackaging-friendly install",
2026-06-21T09:42:01.6513599Z       "requiredStages": [
2026-06-21T09:42:01.6513905Z         "doc"
2026-06-21T09:42:01.6514208Z       ],
2026-06-21T09:42:01.6514526Z       "stages": {
2026-06-21T09:42:01.6514831Z         "doc": {
2026-06-21T09:42:01.6515132Z           "complete": true,
2026-06-21T09:42:01.6515442Z           "evidence": [
2026-06-21T09:42:01.6515747Z             {
2026-06-21T09:42:01.6516067Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6516382Z               "line": 755
2026-06-21T09:42:01.6516682Z             }
2026-06-21T09:42:01.6516985Z           ]
2026-06-21T09:42:01.6517278Z         },
2026-06-21T09:42:01.6517583Z         "impl": {
2026-06-21T09:42:01.6517893Z           "complete": false,
2026-06-21T09:42:01.6518194Z           "evidence": []
2026-06-21T09:42:01.6518480Z         },
2026-06-21T09:42:01.6518757Z         "int": {
2026-06-21T09:42:01.6519148Z           "complete": false,
2026-06-21T09:42:01.6519447Z           "evidence": []
2026-06-21T09:42:01.6519740Z         },
2026-06-21T09:42:01.6520037Z         "unit": {
2026-06-21T09:42:01.6520327Z           "complete": false,
2026-06-21T09:42:01.6520623Z           "evidence": []
2026-06-21T09:42:01.6520899Z         }
2026-06-21T09:42:01.6521186Z       }
2026-06-21T09:42:01.6521466Z     },
2026-06-21T09:42:01.6521757Z     {
2026-06-21T09:42:01.6522057Z       "id": "REQ-INSTALL-3",
2026-06-21T09:42:01.6522443Z       "title": "Idempotent + interactive-optional first run",
2026-06-21T09:42:01.6522742Z       "requiredStages": [
2026-06-21T09:42:01.6523024Z         "impl",
2026-06-21T09:42:01.6523315Z         "int"
2026-06-21T09:42:01.6523592Z       ],
2026-06-21T09:42:01.6523868Z       "stages": {
2026-06-21T09:42:01.6524155Z         "doc": {
2026-06-21T09:42:01.6524437Z           "complete": false,
2026-06-21T09:42:01.6524726Z           "evidence": []
2026-06-21T09:42:01.6525000Z         },
2026-06-21T09:42:01.6525280Z         "impl": {
2026-06-21T09:42:01.6525567Z           "complete": true,
2026-06-21T09:42:01.6525848Z           "evidence": [
2026-06-21T09:42:01.6526239Z             {
2026-06-21T09:42:01.6526554Z               "path": "installer/install.ps1",
2026-06-21T09:42:01.6526937Z               "line": 100
2026-06-21T09:42:01.6527213Z             },
2026-06-21T09:42:01.6527497Z             {
2026-06-21T09:42:01.6527809Z               "path": "installer/install.ps1",
2026-06-21T09:42:01.6528096Z               "line": 111
2026-06-21T09:42:01.6528373Z             },
2026-06-21T09:42:01.6528640Z             {
2026-06-21T09:42:01.6528940Z               "path": "installer/install.sh",
2026-06-21T09:42:01.6529297Z               "line": 79
2026-06-21T09:42:01.6529565Z             }
2026-06-21T09:42:01.6529833Z           ]
2026-06-21T09:42:01.6530107Z         },
2026-06-21T09:42:01.6530371Z         "int": {
2026-06-21T09:42:01.6530658Z           "complete": true,
2026-06-21T09:42:01.6530944Z           "evidence": [
2026-06-21T09:42:01.6531211Z             {
2026-06-21T09:42:01.6531545Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T09:42:01.6531836Z               "line": 167
2026-06-21T09:42:01.6532113Z             }
2026-06-21T09:42:01.6532385Z           ]
2026-06-21T09:42:01.6532657Z         },
2026-06-21T09:42:01.6532936Z         "unit": {
2026-06-21T09:42:01.6533222Z           "complete": false,
2026-06-21T09:42:01.6533509Z           "evidence": []
2026-06-21T09:42:01.6533775Z         }
2026-06-21T09:42:01.6534048Z       }
2026-06-21T09:42:01.6534329Z     },
2026-06-21T09:42:01.6534596Z     {
2026-06-21T09:42:01.6534896Z       "id": "REQ-INSTALL-4",
2026-06-21T09:42:01.6536023Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-21T09:42:01.6536323Z       "requiredStages": [
2026-06-21T09:42:01.6536605Z         "impl",
2026-06-21T09:42:01.6536877Z         "unit"
2026-06-21T09:42:01.6537153Z       ],
2026-06-21T09:42:01.6537429Z       "stages": {
2026-06-21T09:42:01.6537701Z         "doc": {
2026-06-21T09:42:01.6537977Z           "complete": false,
2026-06-21T09:42:01.6538266Z           "evidence": []
2026-06-21T09:42:01.6538542Z         },
2026-06-21T09:42:01.6538815Z         "impl": {
2026-06-21T09:42:01.6539162Z           "complete": true,
2026-06-21T09:42:01.6539439Z           "evidence": [
2026-06-21T09:42:01.6543749Z             {
2026-06-21T09:42:01.6544158Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.6544435Z               "line": 165
2026-06-21T09:42:01.6544713Z             },
2026-06-21T09:42:01.6544975Z             {
2026-06-21T09:42:01.6545313Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6545585Z               "line": 29
2026-06-21T09:42:01.6545860Z             },
2026-06-21T09:42:01.6546125Z             {
2026-06-21T09:42:01.6546464Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6546744Z               "line": 288
2026-06-21T09:42:01.6547016Z             },
2026-06-21T09:42:01.6547274Z             {
2026-06-21T09:42:01.6547589Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6547865Z               "line": 356
2026-06-21T09:42:01.6548110Z             },
2026-06-21T09:42:01.6548372Z             {
2026-06-21T09:42:01.6548689Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6549040Z               "line": 386
2026-06-21T09:42:01.6549301Z             },
2026-06-21T09:42:01.6549549Z             {
2026-06-21T09:42:01.6549869Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6550137Z               "line": 434
2026-06-21T09:42:01.6550385Z             },
2026-06-21T09:42:01.6550643Z             {
2026-06-21T09:42:01.6550929Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6551203Z               "line": 5396
2026-06-21T09:42:01.6551454Z             }
2026-06-21T09:42:01.6551703Z           ]
2026-06-21T09:42:01.6552097Z         },
2026-06-21T09:42:01.6552360Z         "int": {
2026-06-21T09:42:01.6552632Z           "complete": false,
2026-06-21T09:42:01.6552999Z           "evidence": []
2026-06-21T09:42:01.6553252Z         },
2026-06-21T09:42:01.6553510Z         "unit": {
2026-06-21T09:42:01.6553787Z           "complete": true,
2026-06-21T09:42:01.6554056Z           "evidence": [
2026-06-21T09:42:01.6554314Z             {
2026-06-21T09:42:01.6554657Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.6554920Z               "line": 375
2026-06-21T09:42:01.6555177Z             },
2026-06-21T09:42:01.6555440Z             {
2026-06-21T09:42:01.6555765Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6556026Z               "line": 808
2026-06-21T09:42:01.6556292Z             },
2026-06-21T09:42:01.6556547Z             {
2026-06-21T09:42:01.6556867Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6557133Z               "line": 849
2026-06-21T09:42:01.6557406Z             },
2026-06-21T09:42:01.6557664Z             {
2026-06-21T09:42:01.6557973Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6558244Z               "line": 869
2026-06-21T09:42:01.6558493Z             },
2026-06-21T09:42:01.6558740Z             {
2026-06-21T09:42:01.6559120Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6559382Z               "line": 8403
2026-06-21T09:42:01.6559648Z             }
2026-06-21T09:42:01.6559905Z           ]
2026-06-21T09:42:01.6560201Z         }
2026-06-21T09:42:01.6560687Z       }
2026-06-21T09:42:01.6560941Z     },
2026-06-21T09:42:01.6561198Z     {
2026-06-21T09:42:01.6561470Z       "id": "REQ-INSTALL-5",
2026-06-21T09:42:01.6562381Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-21T09:42:01.6562849Z       "requiredStages": [
2026-06-21T09:42:01.6563126Z         "impl",
2026-06-21T09:42:01.6563382Z         "int"
2026-06-21T09:42:01.6563635Z       ],
2026-06-21T09:42:01.6563907Z       "stages": {
2026-06-21T09:42:01.6564164Z         "doc": {
2026-06-21T09:42:01.6564428Z           "complete": false,
2026-06-21T09:42:01.6564688Z           "evidence": []
2026-06-21T09:42:01.6564936Z         },
2026-06-21T09:42:01.6565193Z         "impl": {
2026-06-21T09:42:01.6565456Z           "complete": true,
2026-06-21T09:42:01.6565714Z           "evidence": [
2026-06-21T09:42:01.6565957Z             {
2026-06-21T09:42:01.6566257Z               "path": "installer/install.ps1",
2026-06-21T09:42:01.6566519Z               "line": 5
2026-06-21T09:42:01.6566776Z             },
2026-06-21T09:42:01.6567032Z             {
2026-06-21T09:42:01.6567312Z               "path": "installer/install.sh",
2026-06-21T09:42:01.6567574Z               "line": 6
2026-06-21T09:42:01.6567821Z             }
2026-06-21T09:42:01.6568079Z           ]
2026-06-21T09:42:01.6568328Z         },
2026-06-21T09:42:01.6568581Z         "int": {
2026-06-21T09:42:01.6568853Z           "complete": true,
2026-06-21T09:42:01.6569211Z           "evidence": [
2026-06-21T09:42:01.6569459Z             {
2026-06-21T09:42:01.6569766Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T09:42:01.6570069Z               "line": 22
2026-06-21T09:42:01.6570332Z             }
2026-06-21T09:42:01.6570580Z           ]
2026-06-21T09:42:01.6570833Z         },
2026-06-21T09:42:01.6571090Z         "unit": {
2026-06-21T09:42:01.6571362Z           "complete": false,
2026-06-21T09:42:01.6571610Z           "evidence": []
2026-06-21T09:42:01.6571862Z         }
2026-06-21T09:42:01.6572107Z       }
2026-06-21T09:42:01.6572347Z     },
2026-06-21T09:42:01.6572598Z     {
2026-06-21T09:42:01.6572851Z       "id": "REQ-INSTALL-6",
2026-06-21T09:42:01.6574887Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-21T09:42:01.6575415Z       "requiredStages": [
2026-06-21T09:42:01.6575668Z         "impl",
2026-06-21T09:42:01.6575917Z         "unit"
2026-06-21T09:42:01.6576163Z       ],
2026-06-21T09:42:01.6576416Z       "stages": {
2026-06-21T09:42:01.6576659Z         "doc": {
2026-06-21T09:42:01.6576923Z           "complete": false,
2026-06-21T09:42:01.6577190Z           "evidence": []
2026-06-21T09:42:01.6577436Z         },
2026-06-21T09:42:01.6577691Z         "impl": {
2026-06-21T09:42:01.6577945Z           "complete": true,
2026-06-21T09:42:01.6578192Z           "evidence": [
2026-06-21T09:42:01.6578430Z             {
2026-06-21T09:42:01.6578740Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6579083Z               "line": 61
2026-06-21T09:42:01.6579345Z             },
2026-06-21T09:42:01.6579603Z             {
2026-06-21T09:42:01.6579908Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.6580180Z               "line": 641
2026-06-21T09:42:01.6580422Z             },
2026-06-21T09:42:01.6580672Z             {
2026-06-21T09:42:01.6580996Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.6581244Z               "line": 191
2026-06-21T09:42:01.6581489Z             },
2026-06-21T09:42:01.6581727Z             {
2026-06-21T09:42:01.6582032Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.6582290Z               "line": 276
2026-06-21T09:42:01.6582546Z             },
2026-06-21T09:42:01.6582793Z             {
2026-06-21T09:42:01.6583092Z               "path": "crates/spt/src/main.rs",
2026-06-21T09:42:01.6583359Z               "line": 43
2026-06-21T09:42:01.6583612Z             },
2026-06-21T09:42:01.6583863Z             {
2026-06-21T09:42:01.6584159Z               "path": "installer/install.sh",
2026-06-21T09:42:01.6584422Z               "line": 104
2026-06-21T09:42:01.6584669Z             }
2026-06-21T09:42:01.6584909Z           ]
2026-06-21T09:42:01.6585157Z         },
2026-06-21T09:42:01.6585404Z         "int": {
2026-06-21T09:42:01.6585675Z           "complete": false,
2026-06-21T09:42:01.6585938Z           "evidence": []
2026-06-21T09:42:01.6586186Z         },
2026-06-21T09:42:01.6586448Z         "unit": {
2026-06-21T09:42:01.6586714Z           "complete": true,
2026-06-21T09:42:01.6586976Z           "evidence": [
2026-06-21T09:42:01.6587215Z             {
2026-06-21T09:42:01.6587539Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:42:01.6587793Z               "line": 894
2026-06-21T09:42:01.6588044Z             }
2026-06-21T09:42:01.6588294Z           ]
2026-06-21T09:42:01.6588542Z         }
2026-06-21T09:42:01.6588800Z       }
2026-06-21T09:42:01.6589143Z     },
2026-06-21T09:42:01.6589382Z     {
2026-06-21T09:42:01.6589648Z       "id": "REQ-INSTALL-7",
2026-06-21T09:42:01.6591508Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-21T09:42:01.6591781Z       "requiredStages": [
2026-06-21T09:42:01.6592034Z         "impl"
2026-06-21T09:42:01.6592277Z       ],
2026-06-21T09:42:01.6592520Z       "stages": {
2026-06-21T09:42:01.6592763Z         "doc": {
2026-06-21T09:42:01.6593030Z           "complete": false,
2026-06-21T09:42:01.6593298Z           "evidence": []
2026-06-21T09:42:01.6593558Z         },
2026-06-21T09:42:01.6593828Z         "impl": {
2026-06-21T09:42:01.6594090Z           "complete": true,
2026-06-21T09:42:01.6594338Z           "evidence": [
2026-06-21T09:42:01.6594596Z             {
2026-06-21T09:42:01.6595015Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6595278Z               "line": 3920
2026-06-21T09:42:01.6595626Z             },
2026-06-21T09:42:01.6595878Z             {
2026-06-21T09:42:01.6596170Z               "path": "installer/install.ps1",
2026-06-21T09:42:01.6596421Z               "line": 157
2026-06-21T09:42:01.6596673Z             }
2026-06-21T09:42:01.6596926Z           ]
2026-06-21T09:42:01.6597171Z         },
2026-06-21T09:42:01.6597409Z         "int": {
2026-06-21T09:42:01.6597657Z           "complete": false,
2026-06-21T09:42:01.6597904Z           "evidence": []
2026-06-21T09:42:01.6598137Z         },
2026-06-21T09:42:01.6598386Z         "unit": {
2026-06-21T09:42:01.6598647Z           "complete": false,
2026-06-21T09:42:01.6598896Z           "evidence": []
2026-06-21T09:42:01.6599211Z         }
2026-06-21T09:42:01.6599445Z       }
2026-06-21T09:42:01.6599679Z     },
2026-06-21T09:42:01.6599918Z     {
2026-06-21T09:42:01.6600179Z       "id": "REQ-INSTALL-8",
2026-06-21T09:42:01.6602432Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-21T09:42:01.6602699Z       "requiredStages": [
2026-06-21T09:42:01.6602947Z         "impl"
2026-06-21T09:42:01.6603190Z       ],
2026-06-21T09:42:01.6603434Z       "stages": {
2026-06-21T09:42:01.6603681Z         "doc": {
2026-06-21T09:42:01.6603938Z           "complete": false,
2026-06-21T09:42:01.6604198Z           "evidence": []
2026-06-21T09:42:01.6604436Z         },
2026-06-21T09:42:01.6604683Z         "impl": {
2026-06-21T09:42:01.6604936Z           "complete": true,
2026-06-21T09:42:01.6605194Z           "evidence": [
2026-06-21T09:42:01.6605438Z             {
2026-06-21T09:42:01.6605724Z               "path": "installer/install.ps1",
2026-06-21T09:42:01.6605987Z               "line": 184
2026-06-21T09:42:01.6606233Z             },
2026-06-21T09:42:01.6606486Z             {
2026-06-21T09:42:01.6606767Z               "path": "installer/install.sh",
2026-06-21T09:42:01.6607029Z               "line": 121
2026-06-21T09:42:01.6607272Z             }
2026-06-21T09:42:01.6607515Z           ]
2026-06-21T09:42:01.6607763Z         },
2026-06-21T09:42:01.6607997Z         "int": {
2026-06-21T09:42:01.6608260Z           "complete": false,
2026-06-21T09:42:01.6608517Z           "evidence": []
2026-06-21T09:42:01.6608769Z         },
2026-06-21T09:42:01.6609088Z         "unit": {
2026-06-21T09:42:01.6609635Z           "complete": false,
2026-06-21T09:42:01.6610034Z           "evidence": []
2026-06-21T09:42:01.6610329Z         }
2026-06-21T09:42:01.6610626Z       }
2026-06-21T09:42:01.6610916Z     },
2026-06-21T09:42:01.6611207Z     {
2026-06-21T09:42:01.6611536Z       "id": "REQ-INSTALL-9",
2026-06-21T09:42:01.6615368Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-21T09:42:01.6615716Z       "requiredStages": [
2026-06-21T09:42:01.6616021Z         "doc",
2026-06-21T09:42:01.6616327Z         "impl",
2026-06-21T09:42:01.6616632Z         "unit"
2026-06-21T09:42:01.6616923Z       ],
2026-06-21T09:42:01.6617229Z       "stages": {
2026-06-21T09:42:01.6617527Z         "doc": {
2026-06-21T09:42:01.6617851Z           "complete": true,
2026-06-21T09:42:01.6618162Z           "evidence": [
2026-06-21T09:42:01.6618452Z             {
2026-06-21T09:42:01.6618787Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6619544Z               "line": 771
2026-06-21T09:42:01.6619852Z             }
2026-06-21T09:42:01.6620137Z           ]
2026-06-21T09:42:01.6620552Z         },
2026-06-21T09:42:01.6620848Z         "impl": {
2026-06-21T09:42:01.6621167Z           "complete": true,
2026-06-21T09:42:01.6621467Z           "evidence": [
2026-06-21T09:42:01.6621749Z             {
2026-06-21T09:42:01.6622120Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6622421Z               "line": 2535
2026-06-21T09:42:01.6622724Z             },
2026-06-21T09:42:01.6623014Z             {
2026-06-21T09:42:01.6623371Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6623681Z               "line": 2559
2026-06-21T09:42:01.6623915Z             }
2026-06-21T09:42:01.6624153Z           ]
2026-06-21T09:42:01.6624386Z         },
2026-06-21T09:42:01.6624625Z         "int": {
2026-06-21T09:42:01.6624884Z           "complete": false,
2026-06-21T09:42:01.6625133Z           "evidence": []
2026-06-21T09:42:01.6625375Z         },
2026-06-21T09:42:01.6625624Z         "unit": {
2026-06-21T09:42:01.6625881Z           "complete": true,
2026-06-21T09:42:01.6626138Z           "evidence": [
2026-06-21T09:42:01.6626381Z             {
2026-06-21T09:42:01.6626662Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6626915Z               "line": 7591
2026-06-21T09:42:01.6627154Z             },
2026-06-21T09:42:01.6627388Z             {
2026-06-21T09:42:01.6627683Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6627925Z               "line": 8433
2026-06-21T09:42:01.6628164Z             }
2026-06-21T09:42:01.6628402Z           ]
2026-06-21T09:42:01.6628635Z         }
2026-06-21T09:42:01.6628865Z       }
2026-06-21T09:42:01.6629179Z     },
2026-06-21T09:42:01.6629413Z     {
2026-06-21T09:42:01.6629667Z       "id": "REQ-KICK-1",
2026-06-21T09:42:01.6637423Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-21T09:42:01.6637861Z       "requiredStages": [
2026-06-21T09:42:01.6638176Z         "doc",
2026-06-21T09:42:01.6638419Z         "impl",
2026-06-21T09:42:01.6638667Z         "unit",
2026-06-21T09:42:01.6639219Z         "int"
2026-06-21T09:42:01.6639472Z       ],
2026-06-21T09:42:01.6639720Z       "stages": {
2026-06-21T09:42:01.6639959Z         "doc": {
2026-06-21T09:42:01.6640217Z           "complete": true,
2026-06-21T09:42:01.6640483Z           "evidence": [
2026-06-21T09:42:01.6640730Z             {
2026-06-21T09:42:01.6641000Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6641243Z               "line": 342
2026-06-21T09:42:01.6641485Z             }
2026-06-21T09:42:01.6641724Z           ]
2026-06-21T09:42:01.6641968Z         },
2026-06-21T09:42:01.6642202Z         "impl": {
2026-06-21T09:42:01.6642464Z           "complete": true,
2026-06-21T09:42:01.6642725Z           "evidence": [
2026-06-21T09:42:01.6642949Z             {
2026-06-21T09:42:01.6643293Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:42:01.6643532Z               "line": 41
2026-06-21T09:42:01.6643773Z             },
2026-06-21T09:42:01.6644000Z             {
2026-06-21T09:42:01.6644290Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.6644544Z               "line": 701
2026-06-21T09:42:01.6644906Z             }
2026-06-21T09:42:01.6645149Z           ]
2026-06-21T09:42:01.6645384Z         },
2026-06-21T09:42:01.6645713Z         "int": {
2026-06-21T09:42:01.6645971Z           "complete": true,
2026-06-21T09:42:01.6646226Z           "evidence": [
2026-06-21T09:42:01.6646462Z             {
2026-06-21T09:42:01.6646786Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.6647044Z               "line": 913
2026-06-21T09:42:01.6647283Z             }
2026-06-21T09:42:01.6647525Z           ]
2026-06-21T09:42:01.6647759Z         },
2026-06-21T09:42:01.6648007Z         "unit": {
2026-06-21T09:42:01.6648265Z           "complete": true,
2026-06-21T09:42:01.6648503Z           "evidence": [
2026-06-21T09:42:01.6648736Z             {
2026-06-21T09:42:01.6649188Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:42:01.6649469Z               "line": 205
2026-06-21T09:42:01.6649712Z             }
2026-06-21T09:42:01.6649952Z           ]
2026-06-21T09:42:01.6650205Z         }
2026-06-21T09:42:01.6650433Z       }
2026-06-21T09:42:01.6650676Z     },
2026-06-21T09:42:01.6650905Z     {
2026-06-21T09:42:01.6651182Z       "id": "REQ-MANIFEST-1",
2026-06-21T09:42:01.6651731Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-21T09:42:01.6651993Z       "requiredStages": [
2026-06-21T09:42:01.6652237Z         "doc",
2026-06-21T09:42:01.6652471Z         "impl",
2026-06-21T09:42:01.6652715Z         "unit"
2026-06-21T09:42:01.6652947Z       ],
2026-06-21T09:42:01.6653190Z       "stages": {
2026-06-21T09:42:01.6653429Z         "doc": {
2026-06-21T09:42:01.6653683Z           "complete": true,
2026-06-21T09:42:01.6653945Z           "evidence": [
2026-06-21T09:42:01.6654181Z             {
2026-06-21T09:42:01.6654465Z               "path": "docs/MANIFEST.md",
2026-06-21T09:42:01.6654704Z               "line": 19
2026-06-21T09:42:01.6654947Z             }
2026-06-21T09:42:01.6655184Z           ]
2026-06-21T09:42:01.6655414Z         },
2026-06-21T09:42:01.6655658Z         "impl": {
2026-06-21T09:42:01.6655911Z           "complete": true,
2026-06-21T09:42:01.6656167Z           "evidence": [
2026-06-21T09:42:01.6656400Z             {
2026-06-21T09:42:01.6656833Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6657083Z               "line": 18
2026-06-21T09:42:01.6657314Z             }
2026-06-21T09:42:01.6657557Z           ]
2026-06-21T09:42:01.6657799Z         },
2026-06-21T09:42:01.6658042Z         "int": {
2026-06-21T09:42:01.6658290Z           "complete": false,
2026-06-21T09:42:01.6658544Z           "evidence": []
2026-06-21T09:42:01.6658778Z         },
2026-06-21T09:42:01.6659315Z         "unit": {
2026-06-21T09:42:01.6659768Z           "complete": true,
2026-06-21T09:42:01.6660024Z           "evidence": [
2026-06-21T09:42:01.6660272Z             {
2026-06-21T09:42:01.6660621Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6660879Z               "line": 1029
2026-06-21T09:42:01.6661136Z             },
2026-06-21T09:42:01.6661371Z             {
2026-06-21T09:42:01.6661705Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6661960Z               "line": 1325
2026-06-21T09:42:01.6662201Z             },
2026-06-21T09:42:01.6662444Z             {
2026-06-21T09:42:01.6662778Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6663031Z               "line": 1337
2026-06-21T09:42:01.6663260Z             },
2026-06-21T09:42:01.6663502Z             {
2026-06-21T09:42:01.6663836Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6664094Z               "line": 1348
2026-06-21T09:42:01.6664327Z             },
2026-06-21T09:42:01.6664567Z             {
2026-06-21T09:42:01.6664899Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6665158Z               "line": 1365
2026-06-21T09:42:01.6665397Z             },
2026-06-21T09:42:01.6665631Z             {
2026-06-21T09:42:01.6666184Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6666437Z               "line": 1379
2026-06-21T09:42:01.6666776Z             },
2026-06-21T09:42:01.6667009Z             {
2026-06-21T09:42:01.6667341Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6667587Z               "line": 1495
2026-06-21T09:42:01.6667826Z             },
2026-06-21T09:42:01.6668059Z             {
2026-06-21T09:42:01.6668389Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6668640Z               "line": 1510
2026-06-21T09:42:01.6668875Z             },
2026-06-21T09:42:01.6669218Z             {
2026-06-21T09:42:01.6669565Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6669813Z               "line": 1621
2026-06-21T09:42:01.6670049Z             },
2026-06-21T09:42:01.6670270Z             {
2026-06-21T09:42:01.6670614Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6670861Z               "line": 1632
2026-06-21T09:42:01.6671096Z             }
2026-06-21T09:42:01.6671334Z           ]
2026-06-21T09:42:01.6671578Z         }
2026-06-21T09:42:01.6671820Z       }
2026-06-21T09:42:01.6672058Z     },
2026-06-21T09:42:01.6672307Z     {
2026-06-21T09:42:01.6672577Z       "id": "REQ-MANIFEST-2",
2026-06-21T09:42:01.6673944Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-21T09:42:01.6674216Z       "requiredStages": [
2026-06-21T09:42:01.6674459Z         "doc",
2026-06-21T09:42:01.6674711Z         "impl",
2026-06-21T09:42:01.6674959Z         "unit"
2026-06-21T09:42:01.6675212Z       ],
2026-06-21T09:42:01.6675459Z       "stages": {
2026-06-21T09:42:01.6675694Z         "doc": {
2026-06-21T09:42:01.6675966Z           "complete": true,
2026-06-21T09:42:01.6676219Z           "evidence": [
2026-06-21T09:42:01.6676467Z             {
2026-06-21T09:42:01.6676740Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6677006Z               "line": 75
2026-06-21T09:42:01.6677244Z             }
2026-06-21T09:42:01.6677487Z           ]
2026-06-21T09:42:01.6677736Z         },
2026-06-21T09:42:01.6677982Z         "impl": {
2026-06-21T09:42:01.6678251Z           "complete": true,
2026-06-21T09:42:01.6678505Z           "evidence": [
2026-06-21T09:42:01.6678743Z             {
2026-06-21T09:42:01.6679176Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6679440Z               "line": 82
2026-06-21T09:42:01.6679668Z             },
2026-06-21T09:42:01.6679918Z             {
2026-06-21T09:42:01.6680275Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6680547Z               "line": 15
2026-06-21T09:42:01.6680802Z             },
2026-06-21T09:42:01.6681045Z             {
2026-06-21T09:42:01.6681384Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6681652Z               "line": 65
2026-06-21T09:42:01.6681904Z             },
2026-06-21T09:42:01.6682152Z             {
2026-06-21T09:42:01.6682491Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6682752Z               "line": 83
2026-06-21T09:42:01.6683004Z             },
2026-06-21T09:42:01.6683245Z             {
2026-06-21T09:42:01.6683588Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6683850Z               "line": 183
2026-06-21T09:42:01.6684085Z             },
2026-06-21T09:42:01.6684336Z             {
2026-06-21T09:42:01.6684685Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6684942Z               "line": 527
2026-06-21T09:42:01.6685180Z             },
2026-06-21T09:42:01.6685434Z             {
2026-06-21T09:42:01.6685767Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6686033Z               "line": 553
2026-06-21T09:42:01.6686289Z             },
2026-06-21T09:42:01.6686550Z             {
2026-06-21T09:42:01.6686893Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6687266Z               "line": 671
2026-06-21T09:42:01.6687625Z             },
2026-06-21T09:42:01.6687867Z             {
2026-06-21T09:42:01.6688220Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6688490Z               "line": 696
2026-06-21T09:42:01.6688746Z             },
2026-06-21T09:42:01.6689060Z             {
2026-06-21T09:42:01.6689403Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6689666Z               "line": 719
2026-06-21T09:42:01.6689919Z             },
2026-06-21T09:42:01.6690168Z             {
2026-06-21T09:42:01.6690515Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6690773Z               "line": 734
2026-06-21T09:42:01.6691015Z             },
2026-06-21T09:42:01.6691267Z             {
2026-06-21T09:42:01.6691568Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6691826Z               "line": 5567
2026-06-21T09:42:01.6692083Z             },
2026-06-21T09:42:01.6692345Z             {
2026-06-21T09:42:01.6692635Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6692902Z               "line": 5581
2026-06-21T09:42:01.6693141Z             },
2026-06-21T09:42:01.6693395Z             {
2026-06-21T09:42:01.6693702Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6693962Z               "line": 5615
2026-06-21T09:42:01.6694205Z             }
2026-06-21T09:42:01.6694454Z           ]
2026-06-21T09:42:01.6694716Z         },
2026-06-21T09:42:01.6694969Z         "int": {
2026-06-21T09:42:01.6695250Z           "complete": false,
2026-06-21T09:42:01.6695512Z           "evidence": []
2026-06-21T09:42:01.6695760Z         },
2026-06-21T09:42:01.6696027Z         "unit": {
2026-06-21T09:42:01.6696300Z           "complete": true,
2026-06-21T09:42:01.6696564Z           "evidence": [
2026-06-21T09:42:01.6696819Z             {
2026-06-21T09:42:01.6697197Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.6697468Z               "line": 921
2026-06-21T09:42:01.6697725Z             },
2026-06-21T09:42:01.6697984Z             {
2026-06-21T09:42:01.6698341Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6698598Z               "line": 211
2026-06-21T09:42:01.6698852Z             },
2026-06-21T09:42:01.6699193Z             {
2026-06-21T09:42:01.6699559Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6699821Z               "line": 272
2026-06-21T09:42:01.6700079Z             },
2026-06-21T09:42:01.6700330Z             {
2026-06-21T09:42:01.6700698Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6700951Z               "line": 313
2026-06-21T09:42:01.6701203Z             },
2026-06-21T09:42:01.6701437Z             {
2026-06-21T09:42:01.6701808Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6702076Z               "line": 325
2026-06-21T09:42:01.6702328Z             },
2026-06-21T09:42:01.6702585Z             {
2026-06-21T09:42:01.6702938Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6703209Z               "line": 336
2026-06-21T09:42:01.6703453Z             },
2026-06-21T09:42:01.6703706Z             {
2026-06-21T09:42:01.6704068Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6704328Z               "line": 345
2026-06-21T09:42:01.6704584Z             },
2026-06-21T09:42:01.6704832Z             {
2026-06-21T09:42:01.6705186Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6705452Z               "line": 361
2026-06-21T09:42:01.6705700Z             },
2026-06-21T09:42:01.6705948Z             {
2026-06-21T09:42:01.6706305Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6706573Z               "line": 444
2026-06-21T09:42:01.6706822Z             },
2026-06-21T09:42:01.6707077Z             {
2026-06-21T09:42:01.6707442Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6707819Z               "line": 958
2026-06-21T09:42:01.6708072Z             },
2026-06-21T09:42:01.6708415Z             {
2026-06-21T09:42:01.6708783Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6709121Z               "line": 982
2026-06-21T09:42:01.6709374Z             },
2026-06-21T09:42:01.6709629Z             {
2026-06-21T09:42:01.6709989Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6710266Z               "line": 1008
2026-06-21T09:42:01.6710509Z             },
2026-06-21T09:42:01.6710763Z             {
2026-06-21T09:42:01.6711124Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6711386Z               "line": 1027
2026-06-21T09:42:01.6711641Z             },
2026-06-21T09:42:01.6711889Z             {
2026-06-21T09:42:01.6712246Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6712506Z               "line": 1058
2026-06-21T09:42:01.6712768Z             },
2026-06-21T09:42:01.6713012Z             {
2026-06-21T09:42:01.6713378Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.6713641Z               "line": 309
2026-06-21T09:42:01.6713889Z             },
2026-06-21T09:42:01.6714148Z             {
2026-06-21T09:42:01.6714462Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.6714722Z               "line": 606
2026-06-21T09:42:01.6714978Z             },
2026-06-21T09:42:01.6715231Z             {
2026-06-21T09:42:01.6715541Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6715803Z               "line": 8610
2026-06-21T09:42:01.6716056Z             },
2026-06-21T09:42:01.6716303Z             {
2026-06-21T09:42:01.6716613Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6716875Z               "line": 9558
2026-06-21T09:42:01.6717124Z             }
2026-06-21T09:42:01.6717377Z           ]
2026-06-21T09:42:01.6717613Z         }
2026-06-21T09:42:01.6717868Z       }
2026-06-21T09:42:01.6718117Z     },
2026-06-21T09:42:01.6718365Z     {
2026-06-21T09:42:01.6718642Z       "id": "REQ-MANIFEST-3",
2026-06-21T09:42:01.6720740Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-21T09:42:01.6721027Z       "requiredStages": [
2026-06-21T09:42:01.6721275Z         "doc",
2026-06-21T09:42:01.6721533Z         "impl",
2026-06-21T09:42:01.6721789Z         "unit"
2026-06-21T09:42:01.6722047Z       ],
2026-06-21T09:42:01.6722309Z       "stages": {
2026-06-21T09:42:01.6722549Z         "doc": {
2026-06-21T09:42:01.6722826Z           "complete": true,
2026-06-21T09:42:01.6723081Z           "evidence": [
2026-06-21T09:42:01.6723343Z             {
2026-06-21T09:42:01.6723624Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6723896Z               "line": 81
2026-06-21T09:42:01.6724158Z             }
2026-06-21T09:42:01.6724398Z           ]
2026-06-21T09:42:01.6724654Z         },
2026-06-21T09:42:01.6724892Z         "impl": {
2026-06-21T09:42:01.6725164Z           "complete": true,
2026-06-21T09:42:01.6725425Z           "evidence": [
2026-06-21T09:42:01.6725681Z             {
2026-06-21T09:42:01.6726063Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6726326Z               "line": 92
2026-06-21T09:42:01.6726577Z             },
2026-06-21T09:42:01.6726830Z             {
2026-06-21T09:42:01.6727201Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6727464Z               "line": 101
2026-06-21T09:42:01.6727716Z             },
2026-06-21T09:42:01.6727971Z             {
2026-06-21T09:42:01.6728334Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6728606Z               "line": 132
2026-06-21T09:42:01.6728843Z             },
2026-06-21T09:42:01.6729178Z             {
2026-06-21T09:42:01.6729545Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6729940Z               "line": 577
2026-06-21T09:42:01.6730274Z             },
2026-06-21T09:42:01.6730523Z             {
2026-06-21T09:42:01.6730892Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6731158Z               "line": 633
2026-06-21T09:42:01.6731415Z             },
2026-06-21T09:42:01.6731672Z             {
2026-06-21T09:42:01.6731991Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6732255Z               "line": 5628
2026-06-21T09:42:01.6732493Z             },
2026-06-21T09:42:01.6732746Z             {
2026-06-21T09:42:01.6733052Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6733324Z               "line": 5654
2026-06-21T09:42:01.6733565Z             }
2026-06-21T09:42:01.6733813Z           ]
2026-06-21T09:42:01.6734061Z         },
2026-06-21T09:42:01.6734314Z         "int": {
2026-06-21T09:42:01.6734585Z           "complete": false,
2026-06-21T09:42:01.6734847Z           "evidence": []
2026-06-21T09:42:01.6735105Z         },
2026-06-21T09:42:01.6735358Z         "unit": {
2026-06-21T09:42:01.6735640Z           "complete": true,
2026-06-21T09:42:01.6735904Z           "evidence": [
2026-06-21T09:42:01.6736154Z             {
2026-06-21T09:42:01.6736527Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6736784Z               "line": 371
2026-06-21T09:42:01.6737028Z             },
2026-06-21T09:42:01.6737271Z             {
2026-06-21T09:42:01.6737638Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6737905Z               "line": 429
2026-06-21T09:42:01.6738149Z             },
2026-06-21T09:42:01.6738401Z             {
2026-06-21T09:42:01.6738767Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6739113Z               "line": 1082
2026-06-21T09:42:01.6739365Z             },
2026-06-21T09:42:01.6739608Z             {
2026-06-21T09:42:01.6739923Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.6740181Z               "line": 8703
2026-06-21T09:42:01.6740434Z             }
2026-06-21T09:42:01.6740692Z           ]
2026-06-21T09:42:01.6740939Z         }
2026-06-21T09:42:01.6741172Z       }
2026-06-21T09:42:01.6741419Z     },
2026-06-21T09:42:01.6741670Z     {
2026-06-21T09:42:01.6746308Z       "id": "REQ-MANIFEST-4",
2026-06-21T09:42:01.6748705Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-21T09:42:01.6749185Z       "requiredStages": [
2026-06-21T09:42:01.6749459Z         "doc",
2026-06-21T09:42:01.6749721Z         "impl",
2026-06-21T09:42:01.6749969Z         "unit"
2026-06-21T09:42:01.6750221Z       ],
2026-06-21T09:42:01.6750474Z       "stages": {
2026-06-21T09:42:01.6750727Z         "doc": {
2026-06-21T09:42:01.6751009Z           "complete": true,
2026-06-21T09:42:01.6751291Z           "evidence": [
2026-06-21T09:42:01.6751538Z             {
2026-06-21T09:42:01.6751827Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6752083Z               "line": 88
2026-06-21T09:42:01.6752326Z             }
2026-06-21T09:42:01.6752579Z           ]
2026-06-21T09:42:01.6752831Z         },
2026-06-21T09:42:01.6753088Z         "impl": {
2026-06-21T09:42:01.6753361Z           "complete": true,
2026-06-21T09:42:01.6753613Z           "evidence": [
2026-06-21T09:42:01.6753866Z             {
2026-06-21T09:42:01.6754266Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6754534Z               "line": 100
2026-06-21T09:42:01.6754770Z             },
2026-06-21T09:42:01.6755023Z             {
2026-06-21T09:42:01.6755420Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6755686Z               "line": 183
2026-06-21T09:42:01.6755934Z             },
2026-06-21T09:42:01.6756182Z             {
2026-06-21T09:42:01.6756539Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.6756949Z               "line": 83
2026-06-21T09:42:01.6757289Z             },
2026-06-21T09:42:01.6757542Z             {
2026-06-21T09:42:01.6757924Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.6758186Z               "line": 629
2026-06-21T09:42:01.6758434Z             },
2026-06-21T09:42:01.6758688Z             {
2026-06-21T09:42:01.6759140Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.6759416Z               "line": 654
2026-06-21T09:42:01.6759670Z             }
2026-06-21T09:42:01.6759911Z           ]
2026-06-21T09:42:01.6760152Z         },
2026-06-21T09:42:01.6760395Z         "int": {
2026-06-21T09:42:01.6760682Z           "complete": false,
2026-06-21T09:42:01.6760948Z           "evidence": []
2026-06-21T09:42:01.6761192Z         },
2026-06-21T09:42:01.6761449Z         "unit": {
2026-06-21T09:42:01.6761711Z           "complete": true,
2026-06-21T09:42:01.6761983Z           "evidence": [
2026-06-21T09:42:01.6762232Z             {
2026-06-21T09:42:01.6762623Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6762896Z               "line": 1445
2026-06-21T09:42:01.6763144Z             },
2026-06-21T09:42:01.6763396Z             {
2026-06-21T09:42:01.6763788Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6764054Z               "line": 1478
2026-06-21T09:42:01.6764297Z             },
2026-06-21T09:42:01.6764550Z             {
2026-06-21T09:42:01.6764922Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.6765183Z               "line": 988
2026-06-21T09:42:01.6765432Z             }
2026-06-21T09:42:01.6765679Z           ]
2026-06-21T09:42:01.6765926Z         }
2026-06-21T09:42:01.6766165Z       }
2026-06-21T09:42:01.6766419Z     },
2026-06-21T09:42:01.6766657Z     {
2026-06-21T09:42:01.6766939Z       "id": "REQ-MANIFEST-5",
2026-06-21T09:42:01.6778245Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-21T09:42:01.6778554Z       "requiredStages": [
2026-06-21T09:42:01.6778816Z         "doc",
2026-06-21T09:42:01.6779150Z         "impl",
2026-06-21T09:42:01.6779397Z         "unit"
2026-06-21T09:42:01.6779663Z       ],
2026-06-21T09:42:01.6779922Z       "stages": {
2026-06-21T09:42:01.6780179Z         "doc": {
2026-06-21T09:42:01.6780461Z           "complete": true,
2026-06-21T09:42:01.6780724Z           "evidence": [
2026-06-21T09:42:01.6780974Z             {
2026-06-21T09:42:01.6781262Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6781521Z               "line": 83
2026-06-21T09:42:01.6781764Z             }
2026-06-21T09:42:01.6782017Z           ]
2026-06-21T09:42:01.6782264Z         },
2026-06-21T09:42:01.6782526Z         "impl": {
2026-06-21T09:42:01.6782808Z           "complete": true,
2026-06-21T09:42:01.6783070Z           "evidence": [
2026-06-21T09:42:01.6783329Z             {
2026-06-21T09:42:01.6783735Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6784007Z               "line": 120
2026-06-21T09:42:01.6784378Z             }
2026-06-21T09:42:01.6784622Z           ]
2026-06-21T09:42:01.6784870Z         },
2026-06-21T09:42:01.6785112Z         "int": {
2026-06-21T09:42:01.6785480Z           "complete": false,
2026-06-21T09:42:01.6785751Z           "evidence": []
2026-06-21T09:42:01.6786004Z         },
2026-06-21T09:42:01.6786270Z         "unit": {
2026-06-21T09:42:01.6786533Z           "complete": true,
2026-06-21T09:42:01.6786804Z           "evidence": [
2026-06-21T09:42:01.6787042Z             {
2026-06-21T09:42:01.6787434Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:42:01.6787690Z               "line": 404
2026-06-21T09:42:01.6787939Z             },
2026-06-21T09:42:01.6788182Z             {
2026-06-21T09:42:01.6788572Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6788837Z               "line": 1155
2026-06-21T09:42:01.6789180Z             },
2026-06-21T09:42:01.6789424Z             {
2026-06-21T09:42:01.6789819Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6790086Z               "line": 1184
2026-06-21T09:42:01.6790335Z             },
2026-06-21T09:42:01.6790592Z             {
2026-06-21T09:42:01.6790993Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6791245Z               "line": 1224
2026-06-21T09:42:01.6791491Z             },
2026-06-21T09:42:01.6791728Z             {
2026-06-21T09:42:01.6792127Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6792395Z               "line": 1239
2026-06-21T09:42:01.6792644Z             }
2026-06-21T09:42:01.6792892Z           ]
2026-06-21T09:42:01.6793134Z         }
2026-06-21T09:42:01.6793378Z       }
2026-06-21T09:42:01.6793621Z     },
2026-06-21T09:42:01.6793865Z     {
2026-06-21T09:42:01.6794149Z       "id": "REQ-MANIFEST-6",
2026-06-21T09:42:01.6802359Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-21T09:42:01.6802650Z       "requiredStages": [
2026-06-21T09:42:01.6802903Z         "doc",
2026-06-21T09:42:01.6803142Z         "unit"
2026-06-21T09:42:01.6803390Z       ],
2026-06-21T09:42:01.6803651Z       "stages": {
2026-06-21T09:42:01.6803899Z         "doc": {
2026-06-21T09:42:01.6804172Z           "complete": true,
2026-06-21T09:42:01.6804425Z           "evidence": [
2026-06-21T09:42:01.6804675Z             {
2026-06-21T09:42:01.6804954Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6805221Z               "line": 141
2026-06-21T09:42:01.6805470Z             }
2026-06-21T09:42:01.6805709Z           ]
2026-06-21T09:42:01.6805966Z         },
2026-06-21T09:42:01.6806218Z         "impl": {
2026-06-21T09:42:01.6806495Z           "complete": false,
2026-06-21T09:42:01.6806762Z           "evidence": []
2026-06-21T09:42:01.6807006Z         },
2026-06-21T09:42:01.6807254Z         "int": {
2026-06-21T09:42:01.6807528Z           "complete": false,
2026-06-21T09:42:01.6807800Z           "evidence": []
2026-06-21T09:42:01.6808045Z         },
2026-06-21T09:42:01.6808292Z         "unit": {
2026-06-21T09:42:01.6808564Z           "complete": true,
2026-06-21T09:42:01.6808820Z           "evidence": [
2026-06-21T09:42:01.6809165Z             {
2026-06-21T09:42:01.6809561Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.6809825Z               "line": 1261
2026-06-21T09:42:01.6810076Z             }
2026-06-21T09:42:01.6810314Z           ]
2026-06-21T09:42:01.6810667Z         }
2026-06-21T09:42:01.6810906Z       }
2026-06-21T09:42:01.6811155Z     },
2026-06-21T09:42:01.6811382Z     {
2026-06-21T09:42:01.6811770Z       "id": "REQ-MANIFEST-7",
2026-06-21T09:42:01.6822786Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-21T09:42:01.6823101Z       "requiredStages": [
2026-06-21T09:42:01.6823343Z         "doc",
2026-06-21T09:42:01.6823584Z         "impl",
2026-06-21T09:42:01.6823837Z         "unit"
2026-06-21T09:42:01.6824075Z       ],
2026-06-21T09:42:01.6824324Z       "stages": {
2026-06-21T09:42:01.6824563Z         "doc": {
2026-06-21T09:42:01.6824829Z           "complete": true,
2026-06-21T09:42:01.6825091Z           "evidence": [
2026-06-21T09:42:01.6825344Z             {
2026-06-21T09:42:01.6825639Z               "path": "docs/MANIFEST.md",
2026-06-21T09:42:01.6825896Z               "line": 35
2026-06-21T09:42:01.6826137Z             }
2026-06-21T09:42:01.6826389Z           ]
2026-06-21T09:42:01.6826628Z         },
2026-06-21T09:42:01.6826872Z         "impl": {
2026-06-21T09:42:01.6827135Z           "complete": true,
2026-06-21T09:42:01.6827401Z           "evidence": [
2026-06-21T09:42:01.6827649Z             {
2026-06-21T09:42:01.6828001Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:42:01.6828264Z               "line": 54
2026-06-21T09:42:01.6828502Z             }
2026-06-21T09:42:01.6828749Z           ]
2026-06-21T09:42:01.6829069Z         },
2026-06-21T09:42:01.6829302Z         "int": {
2026-06-21T09:42:01.6829573Z           "complete": false,
2026-06-21T09:42:01.6829837Z           "evidence": []
2026-06-21T09:42:01.6830085Z         },
2026-06-21T09:42:01.6830323Z         "unit": {
2026-06-21T09:42:01.6830594Z           "complete": true,
2026-06-21T09:42:01.6830856Z           "evidence": [
2026-06-21T09:42:01.6831092Z             {
2026-06-21T09:42:01.6831477Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6831722Z               "line": 1638
2026-06-21T09:42:01.6831975Z             }
2026-06-21T09:42:01.6832213Z           ]
2026-06-21T09:42:01.6832455Z         }
2026-06-21T09:42:01.6832699Z       }
2026-06-21T09:42:01.6832938Z     },
2026-06-21T09:42:01.6833177Z     {
2026-06-21T09:42:01.6833452Z       "id": "REQ-MANIFEST-8",
2026-06-21T09:42:01.6841111Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-21T09:42:01.6841406Z       "requiredStages": [
2026-06-21T09:42:01.6841657Z         "doc",
2026-06-21T09:42:01.6841905Z         "impl",
2026-06-21T09:42:01.6842262Z         "unit",
2026-06-21T09:42:01.6842511Z         "int"
2026-06-21T09:42:01.6842748Z       ],
2026-06-21T09:42:01.6843092Z       "stages": {
2026-06-21T09:42:01.6843339Z         "doc": {
2026-06-21T09:42:01.6843602Z           "complete": true,
2026-06-21T09:42:01.6843864Z           "evidence": [
2026-06-21T09:42:01.6844109Z             {
2026-06-21T09:42:01.6844383Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.6844638Z               "line": 184
2026-06-21T09:42:01.6844877Z             },
2026-06-21T09:42:01.6845120Z             {
2026-06-21T09:42:01.6845416Z               "path": "docs/MANIFEST.md",
2026-06-21T09:42:01.6845683Z               "line": 46
2026-06-21T09:42:01.6845921Z             }
2026-06-21T09:42:01.6846159Z           ]
2026-06-21T09:42:01.6846403Z         },
2026-06-21T09:42:01.6846647Z         "impl": {
2026-06-21T09:42:01.6846916Z           "complete": true,
2026-06-21T09:42:01.6847171Z           "evidence": [
2026-06-21T09:42:01.6847419Z             {
2026-06-21T09:42:01.6847810Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.6848063Z               "line": 222
2026-06-21T09:42:01.6848311Z             },
2026-06-21T09:42:01.6848550Z             {
2026-06-21T09:42:01.6848894Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:42:01.6849237Z               "line": 306
2026-06-21T09:42:01.6849476Z             }
2026-06-21T09:42:01.6849726Z           ]
2026-06-21T09:42:01.6849965Z         },
2026-06-21T09:42:01.6850213Z         "int": {
2026-06-21T09:42:01.6850471Z           "complete": true,
2026-06-21T09:42:01.6850732Z           "evidence": [
2026-06-21T09:42:01.6850966Z             {
2026-06-21T09:42:01.6851356Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T09:42:01.6851604Z               "line": 18
2026-06-21T09:42:01.6851839Z             }
2026-06-21T09:42:01.6852095Z           ]
2026-06-21T09:42:01.6852326Z         },
2026-06-21T09:42:01.6852579Z         "unit": {
2026-06-21T09:42:01.6852846Z           "complete": true,
2026-06-21T09:42:01.6853114Z           "evidence": [
2026-06-21T09:42:01.6853357Z             {
2026-06-21T09:42:01.6853734Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.6853997Z               "line": 1656
2026-06-21T09:42:01.6854243Z             },
2026-06-21T09:42:01.6854486Z             {
2026-06-21T09:42:01.6854871Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.6855131Z               "line": 316
2026-06-21T09:42:01.6855375Z             },
2026-06-21T09:42:01.6855623Z             {
2026-06-21T09:42:01.6856000Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.6856262Z               "line": 332
2026-06-21T09:42:01.6856519Z             },
2026-06-21T09:42:01.6856771Z             {
2026-06-21T09:42:01.6857139Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.6857405Z               "line": 345
2026-06-21T09:42:01.6857651Z             },
2026-06-21T09:42:01.6857899Z             {
2026-06-21T09:42:01.6858242Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:42:01.6858500Z               "line": 422
2026-06-21T09:42:01.6858742Z             },
2026-06-21T09:42:01.6859052Z             {
2026-06-21T09:42:01.6859406Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:42:01.6859653Z               "line": 436
2026-06-21T09:42:01.6859896Z             }
2026-06-21T09:42:01.6860141Z           ]
2026-06-21T09:42:01.6860386Z         }
2026-06-21T09:42:01.6860629Z       }
2026-06-21T09:42:01.6860868Z     },
2026-06-21T09:42:01.6861097Z     {
2026-06-21T09:42:01.6861360Z       "id": "REQ-MESH-1",
2026-06-21T09:42:01.6869117Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-21T09:42:01.6869593Z       "requiredStages": [
2026-06-21T09:42:01.6869847Z         "impl",
2026-06-21T09:42:01.6870090Z         "unit",
2026-06-21T09:42:01.6870339Z         "int"
2026-06-21T09:42:01.6870586Z       ],
2026-06-21T09:42:01.6870837Z       "stages": {
2026-06-21T09:42:01.6871095Z         "doc": {
2026-06-21T09:42:01.6871362Z           "complete": false,
2026-06-21T09:42:01.6871610Z           "evidence": []
2026-06-21T09:42:01.6871862Z         },
2026-06-21T09:42:01.6872109Z         "impl": {
2026-06-21T09:42:01.6872377Z           "complete": true,
2026-06-21T09:42:01.6872635Z           "evidence": [
2026-06-21T09:42:01.6872874Z             {
2026-06-21T09:42:01.6873253Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.6873518Z               "line": 972
2026-06-21T09:42:01.6873765Z             },
2026-06-21T09:42:01.6874009Z             {
2026-06-21T09:42:01.6874404Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6874662Z               "line": 38
2026-06-21T09:42:01.6874915Z             },
2026-06-21T09:42:01.6875155Z             {
2026-06-21T09:42:01.6875535Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6875798Z               "line": 161
2026-06-21T09:42:01.6876044Z             },
2026-06-21T09:42:01.6876289Z             {
2026-06-21T09:42:01.6876676Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6876929Z               "line": 206
2026-06-21T09:42:01.6877173Z             },
2026-06-21T09:42:01.6877421Z             {
2026-06-21T09:42:01.6877797Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.6878060Z               "line": 57
2026-06-21T09:42:01.6878308Z             },
2026-06-21T09:42:01.6878568Z             {
2026-06-21T09:42:01.6879053Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:42:01.6879306Z               "line": 24
2026-06-21T09:42:01.6879548Z             },
2026-06-21T09:42:01.6879796Z             {
2026-06-21T09:42:01.6880192Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:42:01.6880453Z               "line": 142
2026-06-21T09:42:01.6880692Z             },
2026-06-21T09:42:01.6880932Z             {
2026-06-21T09:42:01.6881354Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:42:01.6881618Z               "line": 162
2026-06-21T09:42:01.6881865Z             }
2026-06-21T09:42:01.6882117Z           ]
2026-06-21T09:42:01.6882360Z         },
2026-06-21T09:42:01.6882608Z         "int": {
2026-06-21T09:42:01.6882880Z           "complete": true,
2026-06-21T09:42:01.6883143Z           "evidence": [
2026-06-21T09:42:01.6883390Z             {
2026-06-21T09:42:01.6883799Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T09:42:01.6884055Z               "line": 67
2026-06-21T09:42:01.6884297Z             },
2026-06-21T09:42:01.6884541Z             {
2026-06-21T09:42:01.6884946Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T09:42:01.6885199Z               "line": 93
2026-06-21T09:42:01.6885442Z             },
2026-06-21T09:42:01.6885686Z             {
2026-06-21T09:42:01.6886090Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T09:42:01.6886345Z               "line": 117
2026-06-21T09:42:01.6886595Z             },
2026-06-21T09:42:01.6886836Z             {
2026-06-21T09:42:01.6887236Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T09:42:01.6887489Z               "line": 134
2026-06-21T09:42:01.6887737Z             }
2026-06-21T09:42:01.6887985Z           ]
2026-06-21T09:42:01.6888324Z         },
2026-06-21T09:42:01.6888573Z         "unit": {
2026-06-21T09:42:01.6888835Z           "complete": true,
2026-06-21T09:42:01.6889294Z           "evidence": [
2026-06-21T09:42:01.6889532Z             {
2026-06-21T09:42:01.6889914Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.6890171Z               "line": 427
2026-06-21T09:42:01.6890413Z             },
2026-06-21T09:42:01.6890657Z             {
2026-06-21T09:42:01.6891067Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:42:01.6891324Z               "line": 376
2026-06-21T09:42:01.6891562Z             },
2026-06-21T09:42:01.6891797Z             {
2026-06-21T09:42:01.6892211Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:42:01.6892464Z               "line": 412
2026-06-21T09:42:01.6892707Z             },
2026-06-21T09:42:01.6892948Z             {
2026-06-21T09:42:01.6893360Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:42:01.6893607Z               "line": 427
2026-06-21T09:42:01.6893860Z             },
2026-06-21T09:42:01.6894108Z             {
2026-06-21T09:42:01.6894519Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:42:01.6894777Z               "line": 438
2026-06-21T09:42:01.6895020Z             },
2026-06-21T09:42:01.6895264Z             {
2026-06-21T09:42:01.6895673Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:42:01.6895931Z               "line": 449
2026-06-21T09:42:01.6896183Z             },
2026-06-21T09:42:01.6896422Z             {
2026-06-21T09:42:01.6896833Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:42:01.6897084Z               "line": 460
2026-06-21T09:42:01.6897334Z             },
2026-06-21T09:42:01.6897578Z             {
2026-06-21T09:42:01.6897987Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:42:01.6898250Z               "line": 496
2026-06-21T09:42:01.6898494Z             },
2026-06-21T09:42:01.6898745Z             {
2026-06-21T09:42:01.6899241Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:42:01.6899518Z               "line": 519
2026-06-21T09:42:01.6899755Z             },
2026-06-21T09:42:01.6900000Z             {
2026-06-21T09:42:01.6900416Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:42:01.6900673Z               "line": 546
2026-06-21T09:42:01.6900921Z             }
2026-06-21T09:42:01.6901160Z           ]
2026-06-21T09:42:01.6901403Z         }
2026-06-21T09:42:01.6901646Z       }
2026-06-21T09:42:01.6901884Z     },
2026-06-21T09:42:01.6902122Z     {
2026-06-21T09:42:01.6902386Z       "id": "REQ-MESH-2",
2026-06-21T09:42:01.6911781Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-21T09:42:01.6912087Z       "requiredStages": [
2026-06-21T09:42:01.6912334Z         "impl",
2026-06-21T09:42:01.6912570Z         "unit",
2026-06-21T09:42:01.6912812Z         "int"
2026-06-21T09:42:01.6913059Z       ],
2026-06-21T09:42:01.6913312Z       "stages": {
2026-06-21T09:42:01.6913555Z         "doc": {
2026-06-21T09:42:01.6913827Z           "complete": false,
2026-06-21T09:42:01.6914189Z           "evidence": []
2026-06-21T09:42:01.6914432Z         },
2026-06-21T09:42:01.6914689Z         "impl": {
2026-06-21T09:42:01.6915066Z           "complete": true,
2026-06-21T09:42:01.6915337Z           "evidence": [
2026-06-21T09:42:01.6915573Z             {
2026-06-21T09:42:01.6915954Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.6916207Z               "line": 807
2026-06-21T09:42:01.6916451Z             },
2026-06-21T09:42:01.6916694Z             {
2026-06-21T09:42:01.6917066Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.6917323Z               "line": 118
2026-06-21T09:42:01.6917570Z             },
2026-06-21T09:42:01.6917823Z             {
2026-06-21T09:42:01.6918199Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.6918455Z               "line": 347
2026-06-21T09:42:01.6918703Z             },
2026-06-21T09:42:01.6919004Z             {
2026-06-21T09:42:01.6919379Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.6919633Z               "line": 389
2026-06-21T09:42:01.6919885Z             },
2026-06-21T09:42:01.6920127Z             {
2026-06-21T09:42:01.6920500Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.6920761Z               "line": 403
2026-06-21T09:42:01.6920998Z             },
2026-06-21T09:42:01.6921246Z             {
2026-06-21T09:42:01.6921627Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.6921889Z               "line": 492
2026-06-21T09:42:01.6922118Z             },
2026-06-21T09:42:01.6922365Z             {
2026-06-21T09:42:01.6922742Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.6922995Z               "line": 507
2026-06-21T09:42:01.6923242Z             },
2026-06-21T09:42:01.6923478Z             {
2026-06-21T09:42:01.6923863Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.6924120Z               "line": 534
2026-06-21T09:42:01.6924377Z             },
2026-06-21T09:42:01.6924625Z             {
2026-06-21T09:42:01.6925011Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6925278Z               "line": 207
2026-06-21T09:42:01.6925525Z             },
2026-06-21T09:42:01.6925765Z             {
2026-06-21T09:42:01.6926143Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6926405Z               "line": 755
2026-06-21T09:42:01.6926653Z             },
2026-06-21T09:42:01.6926886Z             {
2026-06-21T09:42:01.6927274Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6927525Z               "line": 816
2026-06-21T09:42:01.6927773Z             },
2026-06-21T09:42:01.6928012Z             {
2026-06-21T09:42:01.6928407Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6928679Z               "line": 869
2026-06-21T09:42:01.6928921Z             },
2026-06-21T09:42:01.6929259Z             {
2026-06-21T09:42:01.6929677Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6929940Z               "line": 891
2026-06-21T09:42:01.6930193Z             },
2026-06-21T09:42:01.6930430Z             {
2026-06-21T09:42:01.6930789Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.6931046Z               "line": 122
2026-06-21T09:42:01.6931292Z             },
2026-06-21T09:42:01.6931540Z             {
2026-06-21T09:42:01.6931910Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6932172Z               "line": 44
2026-06-21T09:42:01.6932412Z             },
2026-06-21T09:42:01.6932654Z             {
2026-06-21T09:42:01.6933007Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6933269Z               "line": 184
2026-06-21T09:42:01.6933512Z             },
2026-06-21T09:42:01.6933747Z             {
2026-06-21T09:42:01.6934103Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6934351Z               "line": 211
2026-06-21T09:42:01.6934709Z             },
2026-06-21T09:42:01.6934957Z             {
2026-06-21T09:42:01.6935409Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6935672Z               "line": 251
2026-06-21T09:42:01.6935925Z             },
2026-06-21T09:42:01.6936172Z             {
2026-06-21T09:42:01.6936533Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6936797Z               "line": 275
2026-06-21T09:42:01.6937032Z             },
2026-06-21T09:42:01.6937280Z             {
2026-06-21T09:42:01.6937623Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6937890Z               "line": 289
2026-06-21T09:42:01.6938129Z             },
2026-06-21T09:42:01.6938367Z             {
2026-06-21T09:42:01.6938729Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6939049Z               "line": 300
2026-06-21T09:42:01.6939300Z             },
2026-06-21T09:42:01.6939533Z             {
2026-06-21T09:42:01.6939890Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6940157Z               "line": 313
2026-06-21T09:42:01.6940400Z             }
2026-06-21T09:42:01.6940642Z           ]
2026-06-21T09:42:01.6940872Z         },
2026-06-21T09:42:01.6941129Z         "int": {
2026-06-21T09:42:01.6941402Z           "complete": true,
2026-06-21T09:42:01.6941655Z           "evidence": [
2026-06-21T09:42:01.6941905Z             {
2026-06-21T09:42:01.6942318Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T09:42:01.6942570Z               "line": 116
2026-06-21T09:42:01.6942818Z             },
2026-06-21T09:42:01.6943061Z             {
2026-06-21T09:42:01.6943467Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T09:42:01.6943719Z               "line": 181
2026-06-21T09:42:01.6943964Z             }
2026-06-21T09:42:01.6944192Z           ]
2026-06-21T09:42:01.6944439Z         },
2026-06-21T09:42:01.6944683Z         "unit": {
2026-06-21T09:42:01.6944959Z           "complete": true,
2026-06-21T09:42:01.6945211Z           "evidence": [
2026-06-21T09:42:01.6945444Z             {
2026-06-21T09:42:01.6945831Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6946084Z               "line": 999
2026-06-21T09:42:01.6946327Z             },
2026-06-21T09:42:01.6946570Z             {
2026-06-21T09:42:01.6946960Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6947221Z               "line": 1016
2026-06-21T09:42:01.6947463Z             },
2026-06-21T09:42:01.6947711Z             {
2026-06-21T09:42:01.6948103Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6948360Z               "line": 1024
2026-06-21T09:42:01.6948597Z             },
2026-06-21T09:42:01.6948846Z             {
2026-06-21T09:42:01.6949304Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6949580Z               "line": 1048
2026-06-21T09:42:01.6949828Z             },
2026-06-21T09:42:01.6950060Z             {
2026-06-21T09:42:01.6950464Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.6950717Z               "line": 1499
2026-06-21T09:42:01.6950961Z             },
2026-06-21T09:42:01.6951207Z             {
2026-06-21T09:42:01.6951556Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6951818Z               "line": 347
2026-06-21T09:42:01.6952056Z             },
2026-06-21T09:42:01.6952300Z             {
2026-06-21T09:42:01.6952660Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6952916Z               "line": 370
2026-06-21T09:42:01.6953168Z             },
2026-06-21T09:42:01.6953402Z             {
2026-06-21T09:42:01.6953764Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6954022Z               "line": 407
2026-06-21T09:42:01.6954275Z             },
2026-06-21T09:42:01.6954509Z             {
2026-06-21T09:42:01.6954876Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6955238Z               "line": 431
2026-06-21T09:42:01.6955471Z             },
2026-06-21T09:42:01.6955810Z             {
2026-06-21T09:42:01.6956158Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6956416Z               "line": 483
2026-06-21T09:42:01.6956648Z             },
2026-06-21T09:42:01.6956897Z             {
2026-06-21T09:42:01.6957254Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6957511Z               "line": 499
2026-06-21T09:42:01.6957758Z             },
2026-06-21T09:42:01.6957994Z             {
2026-06-21T09:42:01.6958348Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6958610Z               "line": 514
2026-06-21T09:42:01.6958848Z             },
2026-06-21T09:42:01.6959153Z             {
2026-06-21T09:42:01.6959496Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.6959744Z               "line": 531
2026-06-21T09:42:01.6959984Z             }
2026-06-21T09:42:01.6960232Z           ]
2026-06-21T09:42:01.6960468Z         }
2026-06-21T09:42:01.6960704Z       }
2026-06-21T09:42:01.6960948Z     },
2026-06-21T09:42:01.6961181Z     {
2026-06-21T09:42:01.6961443Z       "id": "REQ-MESH-3",
2026-06-21T09:42:01.6967161Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-21T09:42:01.6967443Z       "requiredStages": [
2026-06-21T09:42:01.6967691Z         "impl",
2026-06-21T09:42:01.6967935Z         "unit",
2026-06-21T09:42:01.6968180Z         "int"
2026-06-21T09:42:01.6968435Z       ],
2026-06-21T09:42:01.6968684Z       "stages": {
2026-06-21T09:42:01.6969036Z         "doc": {
2026-06-21T09:42:01.6969308Z           "complete": false,
2026-06-21T09:42:01.6969585Z           "evidence": []
2026-06-21T09:42:01.6969814Z         },
2026-06-21T09:42:01.6970061Z         "impl": {
2026-06-21T09:42:01.6970324Z           "complete": true,
2026-06-21T09:42:01.6970586Z           "evidence": [
2026-06-21T09:42:01.6970826Z             {
2026-06-21T09:42:01.6971200Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.6971451Z               "line": 641
2026-06-21T09:42:01.6971693Z             }
2026-06-21T09:42:01.6971941Z           ]
2026-06-21T09:42:01.6972175Z         },
2026-06-21T09:42:01.6972424Z         "int": {
2026-06-21T09:42:01.6972700Z           "complete": true,
2026-06-21T09:42:01.6972948Z           "evidence": [
2026-06-21T09:42:01.6973195Z             {
2026-06-21T09:42:01.6973557Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T09:42:01.6973817Z               "line": 373
2026-06-21T09:42:01.6974051Z             },
2026-06-21T09:42:01.6974289Z             {
2026-06-21T09:42:01.6974653Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T09:42:01.6974904Z               "line": 436
2026-06-21T09:42:01.6975152Z             }
2026-06-21T09:42:01.6975400Z           ]
2026-06-21T09:42:01.6975639Z         },
2026-06-21T09:42:01.6975887Z         "unit": {
2026-06-21T09:42:01.6976149Z           "complete": true,
2026-06-21T09:42:01.6976410Z           "evidence": [
2026-06-21T09:42:01.6976654Z             {
2026-06-21T09:42:01.6977039Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.6977293Z               "line": 910
2026-06-21T09:42:01.6977527Z             }
2026-06-21T09:42:01.6977764Z           ]
2026-06-21T09:42:01.6978008Z         }
2026-06-21T09:42:01.6978251Z       }
2026-06-21T09:42:01.6978485Z     },
2026-06-21T09:42:01.6978722Z     {
2026-06-21T09:42:01.6979173Z       "id": "REQ-MESH-4",
2026-06-21T09:42:01.6986839Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-21T09:42:01.6987224Z       "requiredStages": [
2026-06-21T09:42:01.6987466Z         "impl",
2026-06-21T09:42:01.6987719Z         "unit",
2026-06-21T09:42:01.6987971Z         "int"
2026-06-21T09:42:01.6988224Z       ],
2026-06-21T09:42:01.6988477Z       "stages": {
2026-06-21T09:42:01.6988721Z         "doc": {
2026-06-21T09:42:01.6989060Z           "complete": false,
2026-06-21T09:42:01.6989329Z           "evidence": []
2026-06-21T09:42:01.6989598Z         },
2026-06-21T09:42:01.6989837Z         "impl": {
2026-06-21T09:42:01.6990100Z           "complete": true,
2026-06-21T09:42:01.6990367Z           "evidence": [
2026-06-21T09:42:01.6990605Z             {
2026-06-21T09:42:01.6991016Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:42:01.6991269Z               "line": 33
2026-06-21T09:42:01.6991515Z             },
2026-06-21T09:42:01.6991758Z             {
2026-06-21T09:42:01.6992148Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6992409Z               "line": 68
2026-06-21T09:42:01.6992652Z             },
2026-06-21T09:42:01.6992901Z             {
2026-06-21T09:42:01.6993296Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6993549Z               "line": 111
2026-06-21T09:42:01.6997840Z             },
2026-06-21T09:42:01.6998141Z             {
2026-06-21T09:42:01.6998584Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.6998831Z               "line": 462
2026-06-21T09:42:01.6999161Z             },
2026-06-21T09:42:01.6999408Z             {
2026-06-21T09:42:01.6999822Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.7000088Z               "line": 711
2026-06-21T09:42:01.7000331Z             },
2026-06-21T09:42:01.7000579Z             {
2026-06-21T09:42:01.7000975Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.7001237Z               "line": 725
2026-06-21T09:42:01.7001475Z             },
2026-06-21T09:42:01.7001723Z             {
2026-06-21T09:42:01.7002085Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.7002333Z               "line": 132
2026-06-21T09:42:01.7002581Z             },
2026-06-21T09:42:01.7002828Z             {
2026-06-21T09:42:01.7003208Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:42:01.7003470Z               "line": 26
2026-06-21T09:42:01.7003712Z             },
2026-06-21T09:42:01.7003951Z             {
2026-06-21T09:42:01.7004318Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:42:01.7004571Z               "line": 97
2026-06-21T09:42:01.7004810Z             },
2026-06-21T09:42:01.7005049Z             {
2026-06-21T09:42:01.7005409Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:42:01.7005669Z               "line": 119
2026-06-21T09:42:01.7005917Z             },
2026-06-21T09:42:01.7006151Z             {
2026-06-21T09:42:01.7006508Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.7006751Z               "line": 82
2026-06-21T09:42:01.7006991Z             },
2026-06-21T09:42:01.7007228Z             {
2026-06-21T09:42:01.7007587Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.7008015Z               "line": 111
2026-06-21T09:42:01.7008262Z             },
2026-06-21T09:42:01.7008592Z             {
2026-06-21T09:42:01.7009025Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.7009282Z               "line": 232
2026-06-21T09:42:01.7009517Z             },
2026-06-21T09:42:01.7009754Z             {
2026-06-21T09:42:01.7010107Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.7010364Z               "line": 245
2026-06-21T09:42:01.7010605Z             },
2026-06-21T09:42:01.7010838Z             {
2026-06-21T09:42:01.7011149Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7011401Z               "line": 4665
2026-06-21T09:42:01.7011644Z             }
2026-06-21T09:42:01.7011888Z           ]
2026-06-21T09:42:01.7012112Z         },
2026-06-21T09:42:01.7012360Z         "int": {
2026-06-21T09:42:01.7012626Z           "complete": true,
2026-06-21T09:42:01.7012888Z           "evidence": [
2026-06-21T09:42:01.7013132Z             {
2026-06-21T09:42:01.7013500Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T09:42:01.7013754Z               "line": 98
2026-06-21T09:42:01.7013992Z             },
2026-06-21T09:42:01.7014234Z             {
2026-06-21T09:42:01.7014606Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T09:42:01.7014873Z               "line": 140
2026-06-21T09:42:01.7015116Z             }
2026-06-21T09:42:01.7015356Z           ]
2026-06-21T09:42:01.7015605Z         },
2026-06-21T09:42:01.7015845Z         "unit": {
2026-06-21T09:42:01.7016110Z           "complete": true,
2026-06-21T09:42:01.7016368Z           "evidence": [
2026-06-21T09:42:01.7016612Z             {
2026-06-21T09:42:01.7017021Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:42:01.7017288Z               "line": 178
2026-06-21T09:42:01.7017527Z             },
2026-06-21T09:42:01.7017765Z             {
2026-06-21T09:42:01.7018176Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:42:01.7018438Z               "line": 242
2026-06-21T09:42:01.7018684Z             },
2026-06-21T09:42:01.7018932Z             {
2026-06-21T09:42:01.7019389Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.7019656Z               "line": 1079
2026-06-21T09:42:01.7019900Z             },
2026-06-21T09:42:01.7020144Z             {
2026-06-21T09:42:01.7020519Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.7020783Z               "line": 1109
2026-06-21T09:42:01.7021028Z             },
2026-06-21T09:42:01.7021269Z             {
2026-06-21T09:42:01.7021661Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:42:01.7021908Z               "line": 1129
2026-06-21T09:42:01.7022156Z             },
2026-06-21T09:42:01.7022395Z             {
2026-06-21T09:42:01.7022809Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:42:01.7023072Z               "line": 602
2026-06-21T09:42:01.7023312Z             },
2026-06-21T09:42:01.7023555Z             {
2026-06-21T09:42:01.7023910Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:42:01.7024169Z               "line": 148
2026-06-21T09:42:01.7024409Z             },
2026-06-21T09:42:01.7024652Z             {
2026-06-21T09:42:01.7025019Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:42:01.7025277Z               "line": 169
2026-06-21T09:42:01.7025521Z             },
2026-06-21T09:42:01.7025758Z             {
2026-06-21T09:42:01.7026131Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:42:01.7026386Z               "line": 181
2026-06-21T09:42:01.7026632Z             },
2026-06-21T09:42:01.7026862Z             {
2026-06-21T09:42:01.7027219Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:42:01.7027472Z               "line": 202
2026-06-21T09:42:01.7027710Z             },
2026-06-21T09:42:01.7027953Z             {
2026-06-21T09:42:01.7028421Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.7028673Z               "line": 375
2026-06-21T09:42:01.7029094Z             },
2026-06-21T09:42:01.7029320Z             {
2026-06-21T09:42:01.7029678Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.7029921Z               "line": 407
2026-06-21T09:42:01.7030160Z             },
2026-06-21T09:42:01.7030412Z             {
2026-06-21T09:42:01.7030713Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7030961Z               "line": 10052
2026-06-21T09:42:01.7031194Z             }
2026-06-21T09:42:01.7031437Z           ]
2026-06-21T09:42:01.7031670Z         }
2026-06-21T09:42:01.7031906Z       }
2026-06-21T09:42:01.7032135Z     },
2026-06-21T09:42:01.7032379Z     {
2026-06-21T09:42:01.7032640Z       "id": "REQ-MESH-5",
2026-06-21T09:42:01.7037379Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-21T09:42:01.7037684Z       "requiredStages": [
2026-06-21T09:42:01.7037936Z         "impl",
2026-06-21T09:42:01.7038184Z         "unit"
2026-06-21T09:42:01.7038427Z       ],
2026-06-21T09:42:01.7038671Z       "stages": {
2026-06-21T09:42:01.7038909Z         "doc": {
2026-06-21T09:42:01.7039224Z           "complete": false,
2026-06-21T09:42:01.7039491Z           "evidence": []
2026-06-21T09:42:01.7039728Z         },
2026-06-21T09:42:01.7039972Z         "impl": {
2026-06-21T09:42:01.7040239Z           "complete": true,
2026-06-21T09:42:01.7040490Z           "evidence": [
2026-06-21T09:42:01.7040729Z             {
2026-06-21T09:42:01.7041115Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:42:01.7041383Z               "line": 61
2026-06-21T09:42:01.7041621Z             },
2026-06-21T09:42:01.7041865Z             {
2026-06-21T09:42:01.7042253Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:42:01.7042509Z               "line": 109
2026-06-21T09:42:01.7042757Z             },
2026-06-21T09:42:01.7043000Z             {
2026-06-21T09:42:01.7043381Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.7043643Z               "line": 104
2026-06-21T09:42:01.7043877Z             },
2026-06-21T09:42:01.7044122Z             {
2026-06-21T09:42:01.7044507Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.7044766Z               "line": 105
2026-06-21T09:42:01.7045007Z             },
2026-06-21T09:42:01.7045252Z             {
2026-06-21T09:42:01.7045663Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.7045900Z               "line": 85
2026-06-21T09:42:01.7046149Z             },
2026-06-21T09:42:01.7046387Z             {
2026-06-21T09:42:01.7046797Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.7047055Z               "line": 250
2026-06-21T09:42:01.7047295Z             },
2026-06-21T09:42:01.7047539Z             {
2026-06-21T09:42:01.7047934Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.7048191Z               "line": 314
2026-06-21T09:42:01.7048434Z             },
2026-06-21T09:42:01.7048673Z             {
2026-06-21T09:42:01.7049278Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.7049532Z               "line": 767
2026-06-21T09:42:01.7049774Z             },
2026-06-21T09:42:01.7050007Z             {
2026-06-21T09:42:01.7050359Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.7050613Z               "line": 101
2026-06-21T09:42:01.7050842Z             },
2026-06-21T09:42:01.7051079Z             {
2026-06-21T09:42:01.7051557Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.7051800Z               "line": 193
2026-06-21T09:42:01.7052139Z             }
2026-06-21T09:42:01.7052377Z           ]
2026-06-21T09:42:01.7052609Z         },
2026-06-21T09:42:01.7052851Z         "int": {
2026-06-21T09:42:01.7053127Z           "complete": false,
2026-06-21T09:42:01.7053379Z           "evidence": []
2026-06-21T09:42:01.7053622Z         },
2026-06-21T09:42:01.7053856Z         "unit": {
2026-06-21T09:42:01.7054128Z           "complete": true,
2026-06-21T09:42:01.7054381Z           "evidence": [
2026-06-21T09:42:01.7054625Z             {
2026-06-21T09:42:01.7055039Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.7055288Z               "line": 1009
2026-06-21T09:42:01.7055524Z             },
2026-06-21T09:42:01.7055755Z             {
2026-06-21T09:42:01.7056112Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:42:01.7056352Z               "line": 462
2026-06-21T09:42:01.7056605Z             }
2026-06-21T09:42:01.7056847Z           ]
2026-06-21T09:42:01.7057080Z         }
2026-06-21T09:42:01.7057328Z       }
2026-06-21T09:42:01.7057559Z     },
2026-06-21T09:42:01.7057797Z     {
2026-06-21T09:42:01.7058057Z       "id": "REQ-MESH-6",
2026-06-21T09:42:01.7062264Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-21T09:42:01.7062545Z       "requiredStages": [
2026-06-21T09:42:01.7062779Z         "impl",
2026-06-21T09:42:01.7063023Z         "unit"
2026-06-21T09:42:01.7063260Z       ],
2026-06-21T09:42:01.7063500Z       "stages": {
2026-06-21T09:42:01.7063744Z         "doc": {
2026-06-21T09:42:01.7064016Z           "complete": false,
2026-06-21T09:42:01.7064264Z           "evidence": []
2026-06-21T09:42:01.7064507Z         },
2026-06-21T09:42:01.7064764Z         "impl": {
2026-06-21T09:42:01.7065022Z           "complete": true,
2026-06-21T09:42:01.7065275Z           "evidence": [
2026-06-21T09:42:01.7065514Z             {
2026-06-21T09:42:01.7065829Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7066084Z               "line": 4181
2026-06-21T09:42:01.7066320Z             }
2026-06-21T09:42:01.7066559Z           ]
2026-06-21T09:42:01.7066797Z         },
2026-06-21T09:42:01.7067044Z         "int": {
2026-06-21T09:42:01.7067312Z           "complete": false,
2026-06-21T09:42:01.7067564Z           "evidence": []
2026-06-21T09:42:01.7067809Z         },
2026-06-21T09:42:01.7068042Z         "unit": {
2026-06-21T09:42:01.7068308Z           "complete": true,
2026-06-21T09:42:01.7068560Z           "evidence": [
2026-06-21T09:42:01.7068803Z             {
2026-06-21T09:42:01.7069174Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7069440Z               "line": 10602
2026-06-21T09:42:01.7069679Z             },
2026-06-21T09:42:01.7069921Z             {
2026-06-21T09:42:01.7070236Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7070484Z               "line": 10629
2026-06-21T09:42:01.7070728Z             },
2026-06-21T09:42:01.7070967Z             {
2026-06-21T09:42:01.7071272Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7071527Z               "line": 10653
2026-06-21T09:42:01.7071756Z             }
2026-06-21T09:42:01.7071995Z           ]
2026-06-21T09:42:01.7072219Z         }
2026-06-21T09:42:01.7072462Z       }
2026-06-21T09:42:01.7072696Z     },
2026-06-21T09:42:01.7072930Z     {
2026-06-21T09:42:01.7073202Z       "id": "REQ-MIGRATE-1",
2026-06-21T09:42:01.7073748Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-21T09:42:01.7074032Z       "requiredStages": [],
2026-06-21T09:42:01.7074276Z       "stages": {
2026-06-21T09:42:01.7074633Z         "doc": {
2026-06-21T09:42:01.7074905Z           "complete": false,
2026-06-21T09:42:01.7075258Z           "evidence": []
2026-06-21T09:42:01.7075497Z         },
2026-06-21T09:42:01.7075740Z         "impl": {
2026-06-21T09:42:01.7076011Z           "complete": false,
2026-06-21T09:42:01.7076269Z           "evidence": []
2026-06-21T09:42:01.7076507Z         },
2026-06-21T09:42:01.7076754Z         "int": {
2026-06-21T09:42:01.7077004Z           "complete": false,
2026-06-21T09:42:01.7077261Z           "evidence": []
2026-06-21T09:42:01.7077496Z         },
2026-06-21T09:42:01.7077735Z         "unit": {
2026-06-21T09:42:01.7077997Z           "complete": false,
2026-06-21T09:42:01.7078258Z           "evidence": []
2026-06-21T09:42:01.7078482Z         }
2026-06-21T09:42:01.7078712Z       }
2026-06-21T09:42:01.7079037Z     },
2026-06-21T09:42:01.7079268Z     {
2026-06-21T09:42:01.7079528Z       "id": "REQ-MSG-1",
2026-06-21T09:42:01.7081092Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-21T09:42:01.7081378Z       "requiredStages": [
2026-06-21T09:42:01.7081608Z         "impl",
2026-06-21T09:42:01.7081842Z         "unit",
2026-06-21T09:42:01.7082082Z         "int"
2026-06-21T09:42:01.7082307Z       ],
2026-06-21T09:42:01.7082546Z       "stages": {
2026-06-21T09:42:01.7082779Z         "doc": {
2026-06-21T09:42:01.7083046Z           "complete": false,
2026-06-21T09:42:01.7083303Z           "evidence": []
2026-06-21T09:42:01.7083537Z         },
2026-06-21T09:42:01.7083782Z         "impl": {
2026-06-21T09:42:01.7084038Z           "complete": true,
2026-06-21T09:42:01.7084294Z           "evidence": [
2026-06-21T09:42:01.7084531Z             {
2026-06-21T09:42:01.7084869Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.7085127Z               "line": 28
2026-06-21T09:42:01.7085366Z             },
2026-06-21T09:42:01.7085612Z             {
2026-06-21T09:42:01.7085956Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.7086209Z               "line": 94
2026-06-21T09:42:01.7086452Z             },
2026-06-21T09:42:01.7086682Z             {
2026-06-21T09:42:01.7087034Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.7087286Z               "line": 127
2026-06-21T09:42:01.7087530Z             },
2026-06-21T09:42:01.7087770Z             {
2026-06-21T09:42:01.7088122Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.7088376Z               "line": 149
2026-06-21T09:42:01.7088614Z             },
2026-06-21T09:42:01.7088852Z             {
2026-06-21T09:42:01.7089277Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.7089535Z               "line": 174
2026-06-21T09:42:01.7089756Z             },
2026-06-21T09:42:01.7089998Z             {
2026-06-21T09:42:01.7090350Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T09:42:01.7090604Z               "line": 18
2026-06-21T09:42:01.7090847Z             },
2026-06-21T09:42:01.7091075Z             {
2026-06-21T09:42:01.7091414Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:42:01.7091656Z               "line": 13
2026-06-21T09:42:01.7091890Z             },
2026-06-21T09:42:01.7092121Z             {
2026-06-21T09:42:01.7092450Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:42:01.7092700Z               "line": 62
2026-06-21T09:42:01.7092933Z             },
2026-06-21T09:42:01.7093173Z             {
2026-06-21T09:42:01.7093497Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:42:01.7093745Z               "line": 13
2026-06-21T09:42:01.7093984Z             }
2026-06-21T09:42:01.7094226Z           ]
2026-06-21T09:42:01.7094473Z         },
2026-06-21T09:42:01.7094713Z         "int": {
2026-06-21T09:42:01.7094978Z           "complete": true,
2026-06-21T09:42:01.7095228Z           "evidence": [
2026-06-21T09:42:01.7095476Z             {
2026-06-21T09:42:01.7096035Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T09:42:01.7096297Z               "line": 9
2026-06-21T09:42:01.7096631Z             },
2026-06-21T09:42:01.7096860Z             {
2026-06-21T09:42:01.7097279Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T09:42:01.7097533Z               "line": 56
2026-06-21T09:42:01.7097778Z             },
2026-06-21T09:42:01.7098015Z             {
2026-06-21T09:42:01.7098434Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T09:42:01.7098692Z               "line": 113
2026-06-21T09:42:01.7098931Z             }
2026-06-21T09:42:01.7099250Z           ]
2026-06-21T09:42:01.7099489Z         },
2026-06-21T09:42:01.7099737Z         "unit": {
2026-06-21T09:42:01.7099994Z           "complete": true,
2026-06-21T09:42:01.7100241Z           "evidence": [
2026-06-21T09:42:01.7100488Z             {
2026-06-21T09:42:01.7100840Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.7101107Z               "line": 203
2026-06-21T09:42:01.7101335Z             },
2026-06-21T09:42:01.7101582Z             {
2026-06-21T09:42:01.7101931Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.7102179Z               "line": 232
2026-06-21T09:42:01.7102417Z             },
2026-06-21T09:42:01.7102643Z             {
2026-06-21T09:42:01.7102991Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.7103231Z               "line": 277
2026-06-21T09:42:01.7103474Z             },
2026-06-21T09:42:01.7103719Z             {
2026-06-21T09:42:01.7104062Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.7104315Z               "line": 300
2026-06-21T09:42:01.7104554Z             },
2026-06-21T09:42:01.7104795Z             {
2026-06-21T09:42:01.7105135Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:42:01.7105376Z               "line": 325
2026-06-21T09:42:01.7105619Z             },
2026-06-21T09:42:01.7105861Z             {
2026-06-21T09:42:01.7106219Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T09:42:01.7106476Z               "line": 204
2026-06-21T09:42:01.7106723Z             },
2026-06-21T09:42:01.7106957Z             {
2026-06-21T09:42:01.7107319Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T09:42:01.7107576Z               "line": 237
2026-06-21T09:42:01.7107812Z             },
2026-06-21T09:42:01.7108046Z             {
2026-06-21T09:42:01.7108396Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T09:42:01.7108655Z               "line": 251
2026-06-21T09:42:01.7108890Z             },
2026-06-21T09:42:01.7109213Z             {
2026-06-21T09:42:01.7109562Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T09:42:01.7109810Z               "line": 263
2026-06-21T09:42:01.7110058Z             },
2026-06-21T09:42:01.7110288Z             {
2026-06-21T09:42:01.7110622Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:42:01.7110872Z               "line": 162
2026-06-21T09:42:01.7111118Z             },
2026-06-21T09:42:01.7111352Z             {
2026-06-21T09:42:01.7111681Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:42:01.7111930Z               "line": 242
2026-06-21T09:42:01.7112157Z             },
2026-06-21T09:42:01.7112401Z             {
2026-06-21T09:42:01.7112730Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:42:01.7112982Z               "line": 134
2026-06-21T09:42:01.7113227Z             },
2026-06-21T09:42:01.7113455Z             {
2026-06-21T09:42:01.7113796Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:42:01.7114049Z               "line": 153
2026-06-21T09:42:01.7114293Z             }
2026-06-21T09:42:01.7114527Z           ]
2026-06-21T09:42:01.7114760Z         }
2026-06-21T09:42:01.7115003Z       }
2026-06-21T09:42:01.7115237Z     },
2026-06-21T09:42:01.7115486Z     {
2026-06-21T09:42:01.7115748Z       "id": "REQ-MSG-2",
2026-06-21T09:42:01.7116765Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-21T09:42:01.7117136Z       "requiredStages": [
2026-06-21T09:42:01.7117375Z         "impl",
2026-06-21T09:42:01.7117618Z         "unit"
2026-06-21T09:42:01.7117861Z       ],
2026-06-21T09:42:01.7118113Z       "stages": {
2026-06-21T09:42:01.7118353Z         "doc": {
2026-06-21T09:42:01.7118625Z           "complete": false,
2026-06-21T09:42:01.7118884Z           "evidence": []
2026-06-21T09:42:01.7119178Z         },
2026-06-21T09:42:01.7119431Z         "impl": {
2026-06-21T09:42:01.7119679Z           "complete": true,
2026-06-21T09:42:01.7119928Z           "evidence": [
2026-06-21T09:42:01.7120160Z             {
2026-06-21T09:42:01.7120470Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7120718Z               "line": 11
2026-06-21T09:42:01.7120952Z             },
2026-06-21T09:42:01.7121191Z             {
2026-06-21T09:42:01.7121499Z               "path": "crates/spt/src/main.rs",
2026-06-21T09:42:01.7121754Z               "line": 8
2026-06-21T09:42:01.7121993Z             }
2026-06-21T09:42:01.7122227Z           ]
2026-06-21T09:42:01.7122470Z         },
2026-06-21T09:42:01.7122703Z         "int": {
2026-06-21T09:42:01.7122980Z           "complete": false,
2026-06-21T09:42:01.7123223Z           "evidence": []
2026-06-21T09:42:01.7123467Z         },
2026-06-21T09:42:01.7123715Z         "unit": {
2026-06-21T09:42:01.7123986Z           "complete": true,
2026-06-21T09:42:01.7124228Z           "evidence": [
2026-06-21T09:42:01.7124463Z             {
2026-06-21T09:42:01.7124772Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7125025Z               "line": 7717
2026-06-21T09:42:01.7125258Z             },
2026-06-21T09:42:01.7125496Z             {
2026-06-21T09:42:01.7125807Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7126064Z               "line": 7759
2026-06-21T09:42:01.7126303Z             },
2026-06-21T09:42:01.7126554Z             {
2026-06-21T09:42:01.7126852Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7127110Z               "line": 7808
2026-06-21T09:42:01.7127349Z             },
2026-06-21T09:42:01.7127592Z             {
2026-06-21T09:42:01.7127902Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7128153Z               "line": 7831
2026-06-21T09:42:01.7128393Z             },
2026-06-21T09:42:01.7128622Z             {
2026-06-21T09:42:01.7128932Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7129266Z               "line": 9807
2026-06-21T09:42:01.7129517Z             },
2026-06-21T09:42:01.7129743Z             {
2026-06-21T09:42:01.7130048Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7130302Z               "line": 9816
2026-06-21T09:42:01.7130540Z             },
2026-06-21T09:42:01.7130778Z             {
2026-06-21T09:42:01.7131088Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7131345Z               "line": 9830
2026-06-21T09:42:01.7131592Z             }
2026-06-21T09:42:01.7131828Z           ]
2026-06-21T09:42:01.7132069Z         }
2026-06-21T09:42:01.7132314Z       }
2026-06-21T09:42:01.7132553Z     },
2026-06-21T09:42:01.7132782Z     {
2026-06-21T09:42:01.7133050Z       "id": "REQ-MSG-3",
2026-06-21T09:42:01.7134394Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-21T09:42:01.7134662Z       "requiredStages": [
2026-06-21T09:42:01.7134907Z         "impl",
2026-06-21T09:42:01.7135141Z         "unit",
2026-06-21T09:42:01.7135375Z         "int"
2026-06-21T09:42:01.7135605Z       ],
2026-06-21T09:42:01.7135851Z       "stages": {
2026-06-21T09:42:01.7136095Z         "doc": {
2026-06-21T09:42:01.7136352Z           "complete": false,
2026-06-21T09:42:01.7136601Z           "evidence": []
2026-06-21T09:42:01.7136839Z         },
2026-06-21T09:42:01.7137085Z         "impl": {
2026-06-21T09:42:01.7137346Z           "complete": true,
2026-06-21T09:42:01.7137717Z           "evidence": [
2026-06-21T09:42:01.7137956Z             {
2026-06-21T09:42:01.7138389Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T09:42:01.7138642Z               "line": 19
2026-06-21T09:42:01.7138872Z             },
2026-06-21T09:42:01.7139196Z             {
2026-06-21T09:42:01.7139530Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:42:01.7139783Z               "line": 21
2026-06-21T09:42:01.7140019Z             },
2026-06-21T09:42:01.7140251Z             {
2026-06-21T09:42:01.7140589Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:42:01.7140828Z               "line": 48
2026-06-21T09:42:01.7141072Z             },
2026-06-21T09:42:01.7141305Z             {
2026-06-21T09:42:01.7141633Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:42:01.7141886Z               "line": 174
2026-06-21T09:42:01.7142115Z             }
2026-06-21T09:42:01.7142355Z           ]
2026-06-21T09:42:01.7142595Z         },
2026-06-21T09:42:01.7142841Z         "int": {
2026-06-21T09:42:01.7143095Z           "complete": true,
2026-06-21T09:42:01.7143366Z           "evidence": [
2026-06-21T09:42:01.7143610Z             {
2026-06-21T09:42:01.7144028Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T09:42:01.7144278Z               "line": 10
2026-06-21T09:42:01.7144515Z             },
2026-06-21T09:42:01.7144753Z             {
2026-06-21T09:42:01.7145170Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T09:42:01.7145424Z               "line": 56
2026-06-21T09:42:01.7145663Z             }
2026-06-21T09:42:01.7145902Z           ]
2026-06-21T09:42:01.7146140Z         },
2026-06-21T09:42:01.7146373Z         "unit": {
2026-06-21T09:42:01.7146645Z           "complete": true,
2026-06-21T09:42:01.7146893Z           "evidence": [
2026-06-21T09:42:01.7147128Z             {
2026-06-21T09:42:01.7147467Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:42:01.7147726Z               "line": 228
2026-06-21T09:42:01.7147972Z             },
2026-06-21T09:42:01.7148197Z             {
2026-06-21T09:42:01.7148540Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:42:01.7148793Z               "line": 247
2026-06-21T09:42:01.7149122Z             },
2026-06-21T09:42:01.7149356Z             {
2026-06-21T09:42:01.7149690Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:42:01.7149942Z               "line": 270
2026-06-21T09:42:01.7150175Z             }
2026-06-21T09:42:01.7150414Z           ]
2026-06-21T09:42:01.7150647Z         }
2026-06-21T09:42:01.7150882Z       }
2026-06-21T09:42:01.7151111Z     },
2026-06-21T09:42:01.7151341Z     {
2026-06-21T09:42:01.7151603Z       "id": "REQ-MSG-4",
2026-06-21T09:42:01.7154236Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-21T09:42:01.7154528Z       "requiredStages": [
2026-06-21T09:42:01.7154785Z         "impl",
2026-06-21T09:42:01.7155027Z         "unit",
2026-06-21T09:42:01.7155260Z         "int"
2026-06-21T09:42:01.7155487Z       ],
2026-06-21T09:42:01.7155744Z       "stages": {
2026-06-21T09:42:01.7155989Z         "doc": {
2026-06-21T09:42:01.7156252Z           "complete": false,
2026-06-21T09:42:01.7156515Z           "evidence": []
2026-06-21T09:42:01.7156754Z         },
2026-06-21T09:42:01.7157005Z         "impl": {
2026-06-21T09:42:01.7157267Z           "complete": true,
2026-06-21T09:42:01.7157525Z           "evidence": [
2026-06-21T09:42:01.7157759Z             {
2026-06-21T09:42:01.7158097Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:42:01.7158344Z               "line": 19
2026-06-21T09:42:01.7158584Z             },
2026-06-21T09:42:01.7158819Z             {
2026-06-21T09:42:01.7159223Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:42:01.7159592Z               "line": 46
2026-06-21T09:42:01.7159824Z             },
2026-06-21T09:42:01.7160177Z             {
2026-06-21T09:42:01.7160526Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.7160774Z               "line": 532
2026-06-21T09:42:01.7161021Z             },
2026-06-21T09:42:01.7161258Z             {
2026-06-21T09:42:01.7161567Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7161819Z               "line": 3110
2026-06-21T09:42:01.7162057Z             }
2026-06-21T09:42:01.7162306Z           ]
2026-06-21T09:42:01.7162540Z         },
2026-06-21T09:42:01.7162778Z         "int": {
2026-06-21T09:42:01.7163025Z           "complete": true,
2026-06-21T09:42:01.7163292Z           "evidence": [
2026-06-21T09:42:01.7163532Z             {
2026-06-21T09:42:01.7163909Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T09:42:01.7164167Z               "line": 98
2026-06-21T09:42:01.7164406Z             },
2026-06-21T09:42:01.7164653Z             {
2026-06-21T09:42:01.7165026Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T09:42:01.7165287Z               "line": 128
2026-06-21T09:42:01.7165521Z             }
2026-06-21T09:42:01.7165764Z           ]
2026-06-21T09:42:01.7166013Z         },
2026-06-21T09:42:01.7166256Z         "unit": {
2026-06-21T09:42:01.7166535Z           "complete": true,
2026-06-21T09:42:01.7166789Z           "evidence": [
2026-06-21T09:42:01.7167027Z             {
2026-06-21T09:42:01.7167351Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:42:01.7167609Z               "line": 68
2026-06-21T09:42:01.7167842Z             },
2026-06-21T09:42:01.7168076Z             {
2026-06-21T09:42:01.7168414Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:42:01.7168662Z               "line": 79
2026-06-21T09:42:01.7168909Z             },
2026-06-21T09:42:01.7169207Z             {
2026-06-21T09:42:01.7169536Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:42:01.7169803Z               "line": 90
2026-06-21T09:42:01.7170027Z             },
2026-06-21T09:42:01.7170266Z             {
2026-06-21T09:42:01.7170585Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:42:01.7170834Z               "line": 151
2026-06-21T09:42:01.7171067Z             }
2026-06-21T09:42:01.7171305Z           ]
2026-06-21T09:42:01.7171543Z         }
2026-06-21T09:42:01.7171776Z       }
2026-06-21T09:42:01.7172016Z     },
2026-06-21T09:42:01.7172241Z     {
2026-06-21T09:42:01.7172504Z       "id": "REQ-MSG-5",
2026-06-21T09:42:01.7175137Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-21T09:42:01.7175414Z       "requiredStages": [
2026-06-21T09:42:01.7175657Z         "doc",
2026-06-21T09:42:01.7175900Z         "impl",
2026-06-21T09:42:01.7176147Z         "unit"
2026-06-21T09:42:01.7176386Z       ],
2026-06-21T09:42:01.7176630Z       "stages": {
2026-06-21T09:42:01.7176874Z         "doc": {
2026-06-21T09:42:01.7177133Z           "complete": true,
2026-06-21T09:42:01.7177382Z           "evidence": [
2026-06-21T09:42:01.7177611Z             {
2026-06-21T09:42:01.7177883Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.7178135Z               "line": 231
2026-06-21T09:42:01.7178368Z             }
2026-06-21T09:42:01.7178611Z           ]
2026-06-21T09:42:01.7178847Z         },
2026-06-21T09:42:01.7179171Z         "impl": {
2026-06-21T09:42:01.7179436Z           "complete": true,
2026-06-21T09:42:01.7179695Z           "evidence": [
2026-06-21T09:42:01.7179934Z             {
2026-06-21T09:42:01.7180277Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:42:01.7180526Z               "line": 60
2026-06-21T09:42:01.7180750Z             },
2026-06-21T09:42:01.7180992Z             {
2026-06-21T09:42:01.7181451Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.7181709Z               "line": 126
2026-06-21T09:42:01.7182043Z             },
2026-06-21T09:42:01.7182279Z             {
2026-06-21T09:42:01.7182625Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.7182873Z               "line": 135
2026-06-21T09:42:01.7183102Z             },
2026-06-21T09:42:01.7183340Z             {
2026-06-21T09:42:01.7183683Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.7183937Z               "line": 149
2026-06-21T09:42:01.7184179Z             },
2026-06-21T09:42:01.7184422Z             {
2026-06-21T09:42:01.7184760Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.7185011Z               "line": 178
2026-06-21T09:42:01.7185244Z             },
2026-06-21T09:42:01.7185478Z             {
2026-06-21T09:42:01.7185773Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7186035Z               "line": 2802
2026-06-21T09:42:01.7186288Z             }
2026-06-21T09:42:01.7186518Z           ]
2026-06-21T09:42:01.7186761Z         },
2026-06-21T09:42:01.7187008Z         "int": {
2026-06-21T09:42:01.7187270Z           "complete": true,
2026-06-21T09:42:01.7187514Z           "evidence": [
2026-06-21T09:42:01.7187751Z             {
2026-06-21T09:42:01.7188114Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T09:42:01.7188366Z               "line": 19
2026-06-21T09:42:01.7192358Z             }
2026-06-21T09:42:01.7192632Z           ]
2026-06-21T09:42:01.7192868Z         },
2026-06-21T09:42:01.7193113Z         "unit": {
2026-06-21T09:42:01.7193375Z           "complete": true,
2026-06-21T09:42:01.7193634Z           "evidence": [
2026-06-21T09:42:01.7193868Z             {
2026-06-21T09:42:01.7194216Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:42:01.7194459Z               "line": 192
2026-06-21T09:42:01.7194706Z             },
2026-06-21T09:42:01.7194939Z             {
2026-06-21T09:42:01.7195334Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T09:42:01.7195594Z               "line": 154
2026-06-21T09:42:01.7195838Z             },
2026-06-21T09:42:01.7196081Z             {
2026-06-21T09:42:01.7196411Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:42:01.7196662Z               "line": 122
2026-06-21T09:42:01.7196896Z             },
2026-06-21T09:42:01.7197135Z             {
2026-06-21T09:42:01.7197482Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.7197731Z               "line": 452
2026-06-21T09:42:01.7197970Z             },
2026-06-21T09:42:01.7198211Z             {
2026-06-21T09:42:01.7198554Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.7198807Z               "line": 501
2026-06-21T09:42:01.7199117Z             },
2026-06-21T09:42:01.7199351Z             {
2026-06-21T09:42:01.7199694Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.7199962Z               "line": 517
2026-06-21T09:42:01.7200195Z             },
2026-06-21T09:42:01.7200437Z             {
2026-06-21T09:42:01.7200782Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.7201040Z               "line": 536
2026-06-21T09:42:01.7201289Z             },
2026-06-21T09:42:01.7201522Z             {
2026-06-21T09:42:01.7201833Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7202074Z               "line": 7660
2026-06-21T09:42:01.7202318Z             }
2026-06-21T09:42:01.7202557Z           ]
2026-06-21T09:42:01.7202787Z         }
2026-06-21T09:42:01.7203028Z       }
2026-06-21T09:42:01.7203262Z     },
2026-06-21T09:42:01.7203504Z     {
2026-06-21T09:42:01.7203760Z       "id": "REQ-MSG-6",
2026-06-21T09:42:01.7209095Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-21T09:42:01.7209620Z       "requiredStages": [
2026-06-21T09:42:01.7209850Z         "doc",
2026-06-21T09:42:01.7210096Z         "impl",
2026-06-21T09:42:01.7210340Z         "unit"
2026-06-21T09:42:01.7210579Z       ],
2026-06-21T09:42:01.7210828Z       "stages": {
2026-06-21T09:42:01.7211063Z         "doc": {
2026-06-21T09:42:01.7211342Z           "complete": true,
2026-06-21T09:42:01.7211596Z           "evidence": [
2026-06-21T09:42:01.7211830Z             {
2026-06-21T09:42:01.7212101Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.7212354Z               "line": 234
2026-06-21T09:42:01.7212592Z             }
2026-06-21T09:42:01.7212816Z           ]
2026-06-21T09:42:01.7213051Z         },
2026-06-21T09:42:01.7213293Z         "impl": {
2026-06-21T09:42:01.7213556Z           "complete": true,
2026-06-21T09:42:01.7213798Z           "evidence": [
2026-06-21T09:42:01.7214045Z             {
2026-06-21T09:42:01.7214454Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.7214707Z               "line": 177
2026-06-21T09:42:01.7214950Z             },
2026-06-21T09:42:01.7215182Z             {
2026-06-21T09:42:01.7215584Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.7215826Z               "line": 428
2026-06-21T09:42:01.7216069Z             },
2026-06-21T09:42:01.7216309Z             {
2026-06-21T09:42:01.7216701Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.7216958Z               "line": 451
2026-06-21T09:42:01.7217196Z             },
2026-06-21T09:42:01.7217425Z             {
2026-06-21T09:42:01.7217763Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:42:01.7218016Z               "line": 89
2026-06-21T09:42:01.7218259Z             },
2026-06-21T09:42:01.7218489Z             {
2026-06-21T09:42:01.7218862Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.7219209Z               "line": 155
2026-06-21T09:42:01.7219451Z             }
2026-06-21T09:42:01.7219688Z           ]
2026-06-21T09:42:01.7219927Z         },
2026-06-21T09:42:01.7220171Z         "int": {
2026-06-21T09:42:01.7220439Z           "complete": false,
2026-06-21T09:42:01.7220700Z           "evidence": []
2026-06-21T09:42:01.7220938Z         },
2026-06-21T09:42:01.7221181Z         "unit": {
2026-06-21T09:42:01.7221449Z           "complete": true,
2026-06-21T09:42:01.7221700Z           "evidence": [
2026-06-21T09:42:01.7221940Z             {
2026-06-21T09:42:01.7222337Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.7222594Z               "line": 1746
2026-06-21T09:42:01.7222828Z             },
2026-06-21T09:42:01.7223067Z             {
2026-06-21T09:42:01.7223395Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:42:01.7223658Z               "line": 219
2026-06-21T09:42:01.7223902Z             }
2026-06-21T09:42:01.7224140Z           ]
2026-06-21T09:42:01.7224368Z         }
2026-06-21T09:42:01.7224596Z       }
2026-06-21T09:42:01.7224837Z     },
2026-06-21T09:42:01.7225070Z     {
2026-06-21T09:42:01.7225347Z       "id": "REQ-MSG-ENVELOPE",
2026-06-21T09:42:01.7237732Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-21T09:42:01.7238249Z       "requiredStages": [
2026-06-21T09:42:01.7238498Z         "doc",
2026-06-21T09:42:01.7238737Z         "impl",
2026-06-21T09:42:01.7239037Z         "unit",
2026-06-21T09:42:01.7239266Z         "int"
2026-06-21T09:42:01.7239518Z       ],
2026-06-21T09:42:01.7239771Z       "stages": {
2026-06-21T09:42:01.7240010Z         "doc": {
2026-06-21T09:42:01.7240287Z           "complete": true,
2026-06-21T09:42:01.7240542Z           "evidence": [
2026-06-21T09:42:01.7240780Z             {
2026-06-21T09:42:01.7241540Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T09:42:01.7241796Z               "line": 47
2026-06-21T09:42:01.7242044Z             }
2026-06-21T09:42:01.7242282Z           ]
2026-06-21T09:42:01.7242518Z         },
2026-06-21T09:42:01.7242748Z         "impl": {
2026-06-21T09:42:01.7243019Z           "complete": true,
2026-06-21T09:42:01.7243280Z           "evidence": [
2026-06-21T09:42:01.7243524Z             {
2026-06-21T09:42:01.7243858Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:42:01.7244111Z               "line": 20
2026-06-21T09:42:01.7244348Z             },
2026-06-21T09:42:01.7244587Z             {
2026-06-21T09:42:01.7244911Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:42:01.7245154Z               "line": 33
2026-06-21T09:42:01.7245399Z             },
2026-06-21T09:42:01.7245640Z             {
2026-06-21T09:42:01.7245962Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:42:01.7246219Z               "line": 47
2026-06-21T09:42:01.7246458Z             },
2026-06-21T09:42:01.7246697Z             {
2026-06-21T09:42:01.7247016Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:42:01.7247264Z               "line": 58
2026-06-21T09:42:01.7247507Z             },
2026-06-21T09:42:01.7247740Z             {
2026-06-21T09:42:01.7248069Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:42:01.7248320Z               "line": 14
2026-06-21T09:42:01.7248562Z             },
2026-06-21T09:42:01.7248790Z             {
2026-06-21T09:42:01.7249192Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:42:01.7249443Z               "line": 27
2026-06-21T09:42:01.7249678Z             },
2026-06-21T09:42:01.7249921Z             {
2026-06-21T09:42:01.7250245Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:42:01.7250504Z               "line": 40
2026-06-21T09:42:01.7250737Z             },
2026-06-21T09:42:01.7250978Z             {
2026-06-21T09:42:01.7251326Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.7251580Z               "line": 92
2026-06-21T09:42:01.7251823Z             },
2026-06-21T09:42:01.7252061Z             {
2026-06-21T09:42:01.7252414Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.7252662Z               "line": 143
2026-06-21T09:42:01.7252905Z             },
2026-06-21T09:42:01.7253143Z             {
2026-06-21T09:42:01.7253498Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.7253760Z               "line": 216
2026-06-21T09:42:01.7253994Z             },
2026-06-21T09:42:01.7254236Z             {
2026-06-21T09:42:01.7254575Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.7254837Z               "line": 533
2026-06-21T09:42:01.7255080Z             },
2026-06-21T09:42:01.7255433Z             {
2026-06-21T09:42:01.7255772Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:42:01.7256020Z               "line": 78
2026-06-21T09:42:01.7256398Z             },
2026-06-21T09:42:01.7256623Z             {
2026-06-21T09:42:01.7256937Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7257195Z               "line": 3111
2026-06-21T09:42:01.7257432Z             }
2026-06-21T09:42:01.7257676Z           ]
2026-06-21T09:42:01.7257919Z         },
2026-06-21T09:42:01.7258173Z         "int": {
2026-06-21T09:42:01.7258430Z           "complete": true,
2026-06-21T09:42:01.7258686Z           "evidence": [
2026-06-21T09:42:01.7258932Z             {
2026-06-21T09:42:01.7259404Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-21T09:42:01.7259661Z               "line": 15
2026-06-21T09:42:01.7259895Z             }
2026-06-21T09:42:01.7260129Z           ]
2026-06-21T09:42:01.7260362Z         },
2026-06-21T09:42:01.7260605Z         "unit": {
2026-06-21T09:42:01.7260881Z           "complete": true,
2026-06-21T09:42:01.7261130Z           "evidence": [
2026-06-21T09:42:01.7261370Z             {
2026-06-21T09:42:01.7261682Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:42:01.7261929Z               "line": 102
2026-06-21T09:42:01.7262163Z             },
2026-06-21T09:42:01.7262402Z             {
2026-06-21T09:42:01.7262726Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:42:01.7262984Z               "line": 137
2026-06-21T09:42:01.7263227Z             },
2026-06-21T09:42:01.7263465Z             {
2026-06-21T09:42:01.7263788Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:42:01.7264035Z               "line": 98
2026-06-21T09:42:01.7264272Z             },
2026-06-21T09:42:01.7264510Z             {
2026-06-21T09:42:01.7264830Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:42:01.7265087Z               "line": 106
2026-06-21T09:42:01.7265316Z             },
2026-06-21T09:42:01.7265560Z             {
2026-06-21T09:42:01.7265890Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:42:01.7266148Z               "line": 113
2026-06-21T09:42:01.7266380Z             },
2026-06-21T09:42:01.7266622Z             {
2026-06-21T09:42:01.7266949Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:42:01.7267197Z               "line": 122
2026-06-21T09:42:01.7267440Z             }
2026-06-21T09:42:01.7267683Z           ]
2026-06-21T09:42:01.7267922Z         }
2026-06-21T09:42:01.7268155Z       }
2026-06-21T09:42:01.7268385Z     },
2026-06-21T09:42:01.7268612Z     {
2026-06-21T09:42:01.7268932Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-21T09:42:01.7285178Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-21T09:42:01.7285717Z       "requiredStages": [
2026-06-21T09:42:01.7285955Z         "doc",
2026-06-21T09:42:01.7286193Z         "impl",
2026-06-21T09:42:01.7286446Z         "unit",
2026-06-21T09:42:01.7286695Z         "int"
2026-06-21T09:42:01.7286933Z       ],
2026-06-21T09:42:01.7287181Z       "stages": {
2026-06-21T09:42:01.7287419Z         "doc": {
2026-06-21T09:42:01.7287687Z           "complete": true,
2026-06-21T09:42:01.7287938Z           "evidence": [
2026-06-21T09:42:01.7288183Z             {
2026-06-21T09:42:01.7288618Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T09:42:01.7288866Z               "line": 277
2026-06-21T09:42:01.7289214Z             },
2026-06-21T09:42:01.7289452Z             {
2026-06-21T09:42:01.7289742Z               "path": "docs/MANIFEST.md",
2026-06-21T09:42:01.7290004Z               "line": 198
2026-06-21T09:42:01.7290244Z             }
2026-06-21T09:42:01.7290485Z           ]
2026-06-21T09:42:01.7290721Z         },
2026-06-21T09:42:01.7290965Z         "impl": {
2026-06-21T09:42:01.7291227Z           "complete": true,
2026-06-21T09:42:01.7291490Z           "evidence": [
2026-06-21T09:42:01.7291728Z             {
2026-06-21T09:42:01.7292091Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.7292352Z               "line": 1060
2026-06-21T09:42:01.7292581Z             },
2026-06-21T09:42:01.7292829Z             {
2026-06-21T09:42:01.7293200Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:42:01.7293459Z               "line": 23
2026-06-21T09:42:01.7293682Z             },
2026-06-21T09:42:01.7293920Z             {
2026-06-21T09:42:01.7294321Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:42:01.7294573Z               "line": 91
2026-06-21T09:42:01.7294821Z             },
2026-06-21T09:42:01.7295055Z             {
2026-06-21T09:42:01.7295441Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:42:01.7295682Z               "line": 239
2026-06-21T09:42:01.7295919Z             },
2026-06-21T09:42:01.7296152Z             {
2026-06-21T09:42:01.7296525Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:42:01.7296782Z               "line": 287
2026-06-21T09:42:01.7297021Z             },
2026-06-21T09:42:01.7297264Z             {
2026-06-21T09:42:01.7297645Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:42:01.7297908Z               "line": 311
2026-06-21T09:42:01.7298147Z             },
2026-06-21T09:42:01.7298378Z             {
2026-06-21T09:42:01.7298753Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.7299111Z               "line": 60
2026-06-21T09:42:01.7299353Z             },
2026-06-21T09:42:01.7299593Z             {
2026-06-21T09:42:01.7299960Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.7300203Z               "line": 889
2026-06-21T09:42:01.7300437Z             }
2026-06-21T09:42:01.7300666Z           ]
2026-06-21T09:42:01.7300893Z         },
2026-06-21T09:42:01.7301135Z         "int": {
2026-06-21T09:42:01.7301396Z           "complete": true,
2026-06-21T09:42:01.7301648Z           "evidence": [
2026-06-21T09:42:01.7301877Z             {
2026-06-21T09:42:01.7302336Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:42:01.7302598Z               "line": 1089
2026-06-21T09:42:01.7302836Z             },
2026-06-21T09:42:01.7303075Z             {
2026-06-21T09:42:01.7303547Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:42:01.7303803Z               "line": 1194
2026-06-21T09:42:01.7304047Z             },
2026-06-21T09:42:01.7304395Z             {
2026-06-21T09:42:01.7304857Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:42:01.7305210Z               "line": 1262
2026-06-21T09:42:01.7305448Z             },
2026-06-21T09:42:01.7305691Z             {
2026-06-21T09:42:01.7306148Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:42:01.7306407Z               "line": 1355
2026-06-21T09:42:01.7306646Z             }
2026-06-21T09:42:01.7306890Z           ]
2026-06-21T09:42:01.7307129Z         },
2026-06-21T09:42:01.7307371Z         "unit": {
2026-06-21T09:42:01.7307638Z           "complete": true,
2026-06-21T09:42:01.7307886Z           "evidence": [
2026-06-21T09:42:01.7308126Z             {
2026-06-21T09:42:01.7308506Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.7308769Z               "line": 270
2026-06-21T09:42:01.7309082Z             },
2026-06-21T09:42:01.7309318Z             {
2026-06-21T09:42:01.7309705Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:42:01.7309952Z               "line": 350
2026-06-21T09:42:01.7310200Z             },
2026-06-21T09:42:01.7310434Z             {
2026-06-21T09:42:01.7310815Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:42:01.7311063Z               "line": 381
2026-06-21T09:42:01.7311298Z             },
2026-06-21T09:42:01.7311534Z             {
2026-06-21T09:42:01.7311913Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:42:01.7312165Z               "line": 411
2026-06-21T09:42:01.7312400Z             },
2026-06-21T09:42:01.7312643Z             {
2026-06-21T09:42:01.7313024Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:42:01.7313277Z               "line": 440
2026-06-21T09:42:01.7313512Z             },
2026-06-21T09:42:01.7313758Z             {
2026-06-21T09:42:01.7314122Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.7314387Z               "line": 1181
2026-06-21T09:42:01.7314631Z             }
2026-06-21T09:42:01.7314874Z           ]
2026-06-21T09:42:01.7315113Z         }
2026-06-21T09:42:01.7315350Z       }
2026-06-21T09:42:01.7315579Z     },
2026-06-21T09:42:01.7315814Z     {
2026-06-21T09:42:01.7316062Z       "id": "REQ-NET-1",
2026-06-21T09:42:01.7316641Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-21T09:42:01.7316911Z       "requiredStages": [
2026-06-21T09:42:01.7317146Z         "impl",
2026-06-21T09:42:01.7317383Z         "unit",
2026-06-21T09:42:01.7317616Z         "int"
2026-06-21T09:42:01.7317850Z       ],
2026-06-21T09:42:01.7318089Z       "stages": {
2026-06-21T09:42:01.7318337Z         "doc": {
2026-06-21T09:42:01.7318609Z           "complete": false,
2026-06-21T09:42:01.7318856Z           "evidence": []
2026-06-21T09:42:01.7319171Z         },
2026-06-21T09:42:01.7319423Z         "impl": {
2026-06-21T09:42:01.7319689Z           "complete": true,
2026-06-21T09:42:01.7319945Z           "evidence": [
2026-06-21T09:42:01.7320188Z             {
2026-06-21T09:42:01.7320561Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.7320812Z               "line": 54
2026-06-21T09:42:01.7321056Z             },
2026-06-21T09:42:01.7321290Z             {
2026-06-21T09:42:01.7321656Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.7321905Z               "line": 594
2026-06-21T09:42:01.7322146Z             },
2026-06-21T09:42:01.7322387Z             {
2026-06-21T09:42:01.7322716Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:42:01.7322969Z               "line": 130
2026-06-21T09:42:01.7323208Z             },
2026-06-21T09:42:01.7323457Z             {
2026-06-21T09:42:01.7323823Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7324082Z               "line": 97
2026-06-21T09:42:01.7324323Z             },
2026-06-21T09:42:01.7324552Z             {
2026-06-21T09:42:01.7324923Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7325280Z               "line": 159
2026-06-21T09:42:01.7325619Z             },
2026-06-21T09:42:01.7325858Z             {
2026-06-21T09:42:01.7326229Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7326488Z               "line": 175
2026-06-21T09:42:01.7326722Z             },
2026-06-21T09:42:01.7326961Z             {
2026-06-21T09:42:01.7327330Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7327591Z               "line": 190
2026-06-21T09:42:01.7327823Z             },
2026-06-21T09:42:01.7328063Z             {
2026-06-21T09:42:01.7328429Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7328682Z               "line": 271
2026-06-21T09:42:01.7328921Z             },
2026-06-21T09:42:01.7329251Z             {
2026-06-21T09:42:01.7329622Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7329876Z               "line": 306
2026-06-21T09:42:01.7330121Z             },
2026-06-21T09:42:01.7330366Z             {
2026-06-21T09:42:01.7330733Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7331000Z               "line": 312
2026-06-21T09:42:01.7331240Z             },
2026-06-21T09:42:01.7331479Z             {
2026-06-21T09:42:01.7331845Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7332104Z               "line": 318
2026-06-21T09:42:01.7332346Z             },
2026-06-21T09:42:01.7332588Z             {
2026-06-21T09:42:01.7332961Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7333210Z               "line": 334
2026-06-21T09:42:01.7333449Z             },
2026-06-21T09:42:01.7333693Z             {
2026-06-21T09:42:01.7334045Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7334298Z               "line": 354
2026-06-21T09:42:01.7334531Z             },
2026-06-21T09:42:01.7334778Z             {
2026-06-21T09:42:01.7335131Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T09:42:01.7335389Z               "line": 35
2026-06-21T09:42:01.7335646Z             },
2026-06-21T09:42:01.7335874Z             {
2026-06-21T09:42:01.7336223Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T09:42:01.7336479Z               "line": 85
2026-06-21T09:42:01.7336728Z             },
2026-06-21T09:42:01.7336962Z             {
2026-06-21T09:42:01.7337310Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.7337564Z               "line": 138
2026-06-21T09:42:01.7337804Z             },
2026-06-21T09:42:01.7338036Z             {
2026-06-21T09:42:01.7338332Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7338589Z               "line": 2953
2026-06-21T09:42:01.7338819Z             },
2026-06-21T09:42:01.7339119Z             {
2026-06-21T09:42:01.7339448Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.7339705Z               "line": 17
2026-06-21T09:42:01.7339948Z             }
2026-06-21T09:42:01.7340177Z           ]
2026-06-21T09:42:01.7340416Z         },
2026-06-21T09:42:01.7340657Z         "int": {
2026-06-21T09:42:01.7340912Z           "complete": true,
2026-06-21T09:42:01.7341171Z           "evidence": [
2026-06-21T09:42:01.7341405Z             {
2026-06-21T09:42:01.7341776Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:42:01.7342024Z               "line": 341
2026-06-21T09:42:01.7342253Z             },
2026-06-21T09:42:01.7342491Z             {
2026-06-21T09:42:01.7342858Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.7343115Z               "line": 675
2026-06-21T09:42:01.7343353Z             },
2026-06-21T09:42:01.7343580Z             {
2026-06-21T09:42:01.7343948Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.7344204Z               "line": 973
2026-06-21T09:42:01.7344432Z             }
2026-06-21T09:42:01.7344671Z           ]
2026-06-21T09:42:01.7345043Z         },
2026-06-21T09:42:01.7345282Z         "unit": {
2026-06-21T09:42:01.7345555Z           "complete": true,
2026-06-21T09:42:01.7345902Z           "evidence": [
2026-06-21T09:42:01.7346143Z             {
2026-06-21T09:42:01.7346512Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.7346759Z               "line": 651
2026-06-21T09:42:01.7347002Z             },
2026-06-21T09:42:01.7347231Z             {
2026-06-21T09:42:01.7347603Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.7347856Z               "line": 686
2026-06-21T09:42:01.7348096Z             },
2026-06-21T09:42:01.7348336Z             {
2026-06-21T09:42:01.7348715Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:42:01.7349040Z               "line": 940
2026-06-21T09:42:01.7349272Z             },
2026-06-21T09:42:01.7349516Z             {
2026-06-21T09:42:01.7349865Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T09:42:01.7350131Z               "line": 201
2026-06-21T09:42:01.7350371Z             },
2026-06-21T09:42:01.7350599Z             {
2026-06-21T09:42:01.7350977Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7351227Z               "line": 442
2026-06-21T09:42:01.7351472Z             },
2026-06-21T09:42:01.7351692Z             {
2026-06-21T09:42:01.7352069Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7352327Z               "line": 456
2026-06-21T09:42:01.7352561Z             },
2026-06-21T09:42:01.7352803Z             {
2026-06-21T09:42:01.7353166Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7353428Z               "line": 475
2026-06-21T09:42:01.7353665Z             },
2026-06-21T09:42:01.7353908Z             {
2026-06-21T09:42:01.7354265Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T09:42:01.7354522Z               "line": 120
2026-06-21T09:42:01.7354764Z             },
2026-06-21T09:42:01.7355007Z             {
2026-06-21T09:42:01.7355360Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T09:42:01.7355608Z               "line": 163
2026-06-21T09:42:01.7355852Z             },
2026-06-21T09:42:01.7356096Z             {
2026-06-21T09:42:01.7356435Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:42:01.7356695Z               "line": 530
2026-06-21T09:42:01.7356937Z             },
2026-06-21T09:42:01.7357181Z             {
2026-06-21T09:42:01.7357491Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.7357748Z               "line": 616
2026-06-21T09:42:01.7357982Z             },
2026-06-21T09:42:01.7358220Z             {
2026-06-21T09:42:01.7358549Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.7358802Z               "line": 1006
2026-06-21T09:42:01.7359118Z             }
2026-06-21T09:42:01.7359348Z           ]
2026-06-21T09:42:01.7359585Z         }
2026-06-21T09:42:01.7359828Z       }
2026-06-21T09:42:01.7360062Z     },
2026-06-21T09:42:01.7360296Z     {
2026-06-21T09:42:01.7360544Z       "id": "REQ-NET-2",
2026-06-21T09:42:01.7361116Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-21T09:42:01.7361383Z       "requiredStages": [
2026-06-21T09:42:01.7361626Z         "impl"
2026-06-21T09:42:01.7361859Z       ],
2026-06-21T09:42:01.7362094Z       "stages": {
2026-06-21T09:42:01.7362348Z         "doc": {
2026-06-21T09:42:01.7362611Z           "complete": false,
2026-06-21T09:42:01.7362868Z           "evidence": []
2026-06-21T09:42:01.7363106Z         },
2026-06-21T09:42:01.7363348Z         "impl": {
2026-06-21T09:42:01.7363611Z           "complete": true,
2026-06-21T09:42:01.7363864Z           "evidence": [
2026-06-21T09:42:01.7364103Z             {
2026-06-21T09:42:01.7364454Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:42:01.7364714Z               "line": 57
2026-06-21T09:42:01.7364957Z             },
2026-06-21T09:42:01.7365196Z             {
2026-06-21T09:42:01.7365673Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7365925Z               "line": 71
2026-06-21T09:42:01.7366259Z             },
2026-06-21T09:42:01.7366493Z             {
2026-06-21T09:42:01.7366864Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7367111Z               "line": 81
2026-06-21T09:42:01.7367355Z             },
2026-06-21T09:42:01.7367593Z             {
2026-06-21T09:42:01.7367961Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7368242Z               "line": 159
2026-06-21T09:42:01.7368485Z             },
2026-06-21T09:42:01.7368728Z             {
2026-06-21T09:42:01.7369645Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7370523Z               "line": 175
2026-06-21T09:42:01.7371148Z             },
2026-06-21T09:42:01.7371690Z             {
2026-06-21T09:42:01.7372362Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:42:01.7373237Z               "line": 190
2026-06-21T09:42:01.7373861Z             }
2026-06-21T09:42:01.7374401Z           ]
2026-06-21T09:42:01.7374918Z         },
2026-06-21T09:42:01.7375446Z         "int": {
2026-06-21T09:42:01.7376047Z           "complete": false,
2026-06-21T09:42:01.7376705Z           "evidence": []
2026-06-21T09:42:01.7377329Z         },
2026-06-21T09:42:01.7377862Z         "unit": {
2026-06-21T09:42:01.7378434Z           "complete": true,
2026-06-21T09:42:01.7379165Z           "evidence": [
2026-06-21T09:42:01.7379785Z             {
2026-06-21T09:42:01.7380444Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:42:01.7381301Z               "line": 402
2026-06-21T09:42:01.7381917Z             }
2026-06-21T09:42:01.7382494Z           ]
2026-06-21T09:42:01.7383077Z         }
2026-06-21T09:42:01.7383602Z       }
2026-06-21T09:42:01.7384111Z     },
2026-06-21T09:42:01.7384627Z     {
2026-06-21T09:42:01.7385181Z       "id": "REQ-NET-3",
2026-06-21T09:42:01.7386086Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-21T09:42:01.7387151Z       "requiredStages": [
2026-06-21T09:42:01.7387810Z         "impl",
2026-06-21T09:42:01.7388370Z         "unit"
2026-06-21T09:42:01.7388913Z       ],
2026-06-21T09:42:01.7389500Z       "stages": {
2026-06-21T09:42:01.7390064Z         "doc": {
2026-06-21T09:42:01.7390648Z           "complete": false,
2026-06-21T09:42:01.7391324Z           "evidence": []
2026-06-21T09:42:01.7391953Z         },
2026-06-21T09:42:01.7392477Z         "impl": {
2026-06-21T09:42:01.7393059Z           "complete": true,
2026-06-21T09:42:01.7393718Z           "evidence": [
2026-06-21T09:42:01.7394328Z             {
2026-06-21T09:42:01.7394967Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.7395817Z               "line": 39
2026-06-21T09:42:01.7396442Z             },
2026-06-21T09:42:01.7396981Z             {
2026-06-21T09:42:01.7397625Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.7398464Z               "line": 182
2026-06-21T09:42:01.7399168Z             },
2026-06-21T09:42:01.7399722Z             {
2026-06-21T09:42:01.7400361Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:42:01.7401199Z               "line": 333
2026-06-21T09:42:01.7401826Z             },
2026-06-21T09:42:01.7402374Z             {
2026-06-21T09:42:01.7407260Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T09:42:01.7408156Z               "line": 36
2026-06-21T09:42:01.7408805Z             },
2026-06-21T09:42:01.7409442Z             {
2026-06-21T09:42:01.7410134Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.7411035Z               "line": 158
2026-06-21T09:42:01.7411654Z             },
2026-06-21T09:42:01.7412206Z             {
2026-06-21T09:42:01.7412901Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.7413802Z               "line": 238
2026-06-21T09:42:01.7414446Z             },
2026-06-21T09:42:01.7415162Z             {
2026-06-21T09:42:01.7415859Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.7416750Z               "line": 259
2026-06-21T09:42:01.7417491Z             },
2026-06-21T09:42:01.7418024Z             {
2026-06-21T09:42:01.7418702Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.7419670Z               "line": 317
2026-06-21T09:42:01.7420303Z             },
2026-06-21T09:42:01.7420852Z             {
2026-06-21T09:42:01.7421538Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.7422428Z               "line": 336
2026-06-21T09:42:01.7423061Z             },
2026-06-21T09:42:01.7423610Z             {
2026-06-21T09:42:01.7424287Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.7425172Z               "line": 374
2026-06-21T09:42:01.7425794Z             },
2026-06-21T09:42:01.7426343Z             {
2026-06-21T09:42:01.7427010Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.7427876Z               "line": 419
2026-06-21T09:42:01.7428495Z             },
2026-06-21T09:42:01.7429106Z             {
2026-06-21T09:42:01.7429782Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.7430659Z               "line": 432
2026-06-21T09:42:01.7431279Z             },
2026-06-21T09:42:01.7431812Z             {
2026-06-21T09:42:01.7432480Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:42:01.7433321Z               "line": 29
2026-06-21T09:42:01.7433946Z             },
2026-06-21T09:42:01.7434485Z             {
2026-06-21T09:42:01.7435139Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:42:01.7436006Z               "line": 72
2026-06-21T09:42:01.7436621Z             },
2026-06-21T09:42:01.7437165Z             {
2026-06-21T09:42:01.7437832Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:42:01.7438693Z               "line": 123
2026-06-21T09:42:01.7439379Z             }
2026-06-21T09:42:01.7439919Z           ]
2026-06-21T09:42:01.7440428Z         },
2026-06-21T09:42:01.7440949Z         "int": {
2026-06-21T09:42:01.7441538Z           "complete": false,
2026-06-21T09:42:01.7442197Z           "evidence": []
2026-06-21T09:42:01.7442817Z         },
2026-06-21T09:42:01.7443335Z         "unit": {
2026-06-21T09:42:01.7443914Z           "complete": true,
2026-06-21T09:42:01.7444562Z           "evidence": [
2026-06-21T09:42:01.7445163Z             {
2026-06-21T09:42:01.7445826Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T09:42:01.7446667Z               "line": 223
2026-06-21T09:42:01.7447292Z             },
2026-06-21T09:42:01.7447834Z             {
2026-06-21T09:42:01.7448493Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T09:42:01.7449395Z               "line": 351
2026-06-21T09:42:01.7450011Z             },
2026-06-21T09:42:01.7450545Z             {
2026-06-21T09:42:01.7451203Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T09:42:01.7452050Z               "line": 504
2026-06-21T09:42:01.7452665Z             },
2026-06-21T09:42:01.7453200Z             {
2026-06-21T09:42:01.7453852Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T09:42:01.7454675Z               "line": 93
2026-06-21T09:42:01.7455281Z             },
2026-06-21T09:42:01.7455828Z             {
2026-06-21T09:42:01.7456477Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T09:42:01.7457313Z               "line": 142
2026-06-21T09:42:01.7457923Z             },
2026-06-21T09:42:01.7458467Z             {
2026-06-21T09:42:01.7459187Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:42:01.7460027Z               "line": 315
2026-06-21T09:42:01.7460641Z             },
2026-06-21T09:42:01.7461186Z             {
2026-06-21T09:42:01.7461853Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:42:01.7462702Z               "line": 355
2026-06-21T09:42:01.7463317Z             },
2026-06-21T09:42:01.7464013Z             {
2026-06-21T09:42:01.7464673Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:42:01.7465635Z               "line": 494
2026-06-21T09:42:01.7466246Z             }
2026-06-21T09:42:01.7466776Z           ]
2026-06-21T09:42:01.7467298Z         }
2026-06-21T09:42:01.7467802Z       }
2026-06-21T09:42:01.7468302Z     },
2026-06-21T09:42:01.7468798Z     {
2026-06-21T09:42:01.7469405Z       "id": "REQ-NODE-IDENTITY",
2026-06-21T09:42:01.7470587Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-21T09:42:01.7471827Z       "requiredStages": [
2026-06-21T09:42:01.7472462Z         "impl",
2026-06-21T09:42:01.7473009Z         "unit"
2026-06-21T09:42:01.7473553Z       ],
2026-06-21T09:42:01.7474076Z       "stages": {
2026-06-21T09:42:01.7474644Z         "doc": {
2026-06-21T09:42:01.7475215Z           "complete": false,
2026-06-21T09:42:01.7475876Z           "evidence": []
2026-06-21T09:42:01.7476482Z         },
2026-06-21T09:42:01.7477016Z         "impl": {
2026-06-21T09:42:01.7477597Z           "complete": true,
2026-06-21T09:42:01.7478247Z           "evidence": [
2026-06-21T09:42:01.7478852Z             {
2026-06-21T09:42:01.7479573Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:42:01.7480425Z               "line": 60
2026-06-21T09:42:01.7481028Z             },
2026-06-21T09:42:01.7481568Z             {
2026-06-21T09:42:01.7482244Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:42:01.7483089Z               "line": 68
2026-06-21T09:42:01.7483702Z             },
2026-06-21T09:42:01.7484241Z             {
2026-06-21T09:42:01.7484895Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:42:01.7485737Z               "line": 86
2026-06-21T09:42:01.7486341Z             },
2026-06-21T09:42:01.7486879Z             {
2026-06-21T09:42:01.7487547Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:42:01.7488381Z               "line": 120
2026-06-21T09:42:01.7489093Z             },
2026-06-21T09:42:01.7489627Z             {
2026-06-21T09:42:01.7490285Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:42:01.7491128Z               "line": 127
2026-06-21T09:42:01.7491741Z             },
2026-06-21T09:42:01.7492279Z             {
2026-06-21T09:42:01.7492938Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:42:01.7493777Z               "line": 143
2026-06-21T09:42:01.7494392Z             },
2026-06-21T09:42:01.7494916Z             {
2026-06-21T09:42:01.7495545Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T09:42:01.7496358Z               "line": 16
2026-06-21T09:42:01.7496964Z             }
2026-06-21T09:42:01.7497487Z           ]
2026-06-21T09:42:01.7497998Z         },
2026-06-21T09:42:01.7498513Z         "int": {
2026-06-21T09:42:01.7499159Z           "complete": false,
2026-06-21T09:42:01.7499821Z           "evidence": []
2026-06-21T09:42:01.7500431Z         },
2026-06-21T09:42:01.7500960Z         "unit": {
2026-06-21T09:42:01.7501545Z           "complete": true,
2026-06-21T09:42:01.7502186Z           "evidence": [
2026-06-21T09:42:01.7502793Z             {
2026-06-21T09:42:01.7503446Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:42:01.7504301Z               "line": 199
2026-06-21T09:42:01.7504914Z             },
2026-06-21T09:42:01.7505447Z             {
2026-06-21T09:42:01.7506091Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:42:01.7506941Z               "line": 218
2026-06-21T09:42:01.7507547Z             },
2026-06-21T09:42:01.7508087Z             {
2026-06-21T09:42:01.7508735Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:42:01.7509648Z               "line": 234
2026-06-21T09:42:01.7510256Z             },
2026-06-21T09:42:01.7510796Z             {
2026-06-21T09:42:01.7511448Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:42:01.7512291Z               "line": 256
2026-06-21T09:42:01.7513038Z             },
2026-06-21T09:42:01.7513573Z             {
2026-06-21T09:42:01.7514207Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T09:42:01.7515140Z               "line": 124
2026-06-21T09:42:01.7515770Z             },
2026-06-21T09:42:01.7516307Z             {
2026-06-21T09:42:01.7516956Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T09:42:01.7517793Z               "line": 140
2026-06-21T09:42:01.7518412Z             },
2026-06-21T09:42:01.7519013Z             {
2026-06-21T09:42:01.7519639Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T09:42:01.7520472Z               "line": 155
2026-06-21T09:42:01.7521069Z             }
2026-06-21T09:42:01.7521604Z           ]
2026-06-21T09:42:01.7522119Z         }
2026-06-21T09:42:01.7522623Z       }
2026-06-21T09:42:01.7523112Z     },
2026-06-21T09:42:01.7523608Z     {
2026-06-21T09:42:01.7524118Z       "id": "REQ-NOTIF-1",
2026-06-21T09:42:01.7525690Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-21T09:42:01.7527420Z       "requiredStages": [
2026-06-21T09:42:01.7528052Z         "impl",
2026-06-21T09:42:01.7528596Z         "unit",
2026-06-21T09:42:01.7529221Z         "int"
2026-06-21T09:42:01.7529754Z       ],
2026-06-21T09:42:01.7530269Z       "stages": {
2026-06-21T09:42:01.7530821Z         "doc": {
2026-06-21T09:42:01.7531395Z           "complete": false,
2026-06-21T09:42:01.7532059Z           "evidence": []
2026-06-21T09:42:01.7532664Z         },
2026-06-21T09:42:01.7533188Z         "impl": {
2026-06-21T09:42:01.7533754Z           "complete": true,
2026-06-21T09:42:01.7534397Z           "evidence": [
2026-06-21T09:42:01.7534989Z             {
2026-06-21T09:42:01.7535647Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.7536483Z               "line": 514
2026-06-21T09:42:01.7537089Z             },
2026-06-21T09:42:01.7537629Z             {
2026-06-21T09:42:01.7538267Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7539166Z               "line": 30
2026-06-21T09:42:01.7539771Z             },
2026-06-21T09:42:01.7540309Z             {
2026-06-21T09:42:01.7540948Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7541766Z               "line": 69
2026-06-21T09:42:01.7542376Z             },
2026-06-21T09:42:01.7542919Z             {
2026-06-21T09:42:01.7543549Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7544352Z               "line": 93
2026-06-21T09:42:01.7544957Z             },
2026-06-21T09:42:01.7545496Z             {
2026-06-21T09:42:01.7546126Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7546935Z               "line": 107
2026-06-21T09:42:01.7547550Z             },
2026-06-21T09:42:01.7548085Z             {
2026-06-21T09:42:01.7548709Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7549610Z               "line": 142
2026-06-21T09:42:01.7550225Z             },
2026-06-21T09:42:01.7550760Z             {
2026-06-21T09:42:01.7551385Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7552211Z               "line": 187
2026-06-21T09:42:01.7552807Z             },
2026-06-21T09:42:01.7553336Z             {
2026-06-21T09:42:01.7553960Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7554783Z               "line": 258
2026-06-21T09:42:01.7555387Z             },
2026-06-21T09:42:01.7555927Z             {
2026-06-21T09:42:01.7556551Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7557351Z               "line": 372
2026-06-21T09:42:01.7557957Z             },
2026-06-21T09:42:01.7558482Z             {
2026-06-21T09:42:01.7559178Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7559976Z               "line": 479
2026-06-21T09:42:01.7560586Z             },
2026-06-21T09:42:01.7561114Z             {
2026-06-21T09:42:01.7561763Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:42:01.7562737Z               "line": 24
2026-06-21T09:42:01.7563439Z             },
2026-06-21T09:42:01.7563972Z             {
2026-06-21T09:42:01.7564631Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:42:01.7565468Z               "line": 34
2026-06-21T09:42:01.7566073Z             },
2026-06-21T09:42:01.7566606Z             {
2026-06-21T09:42:01.7567256Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:42:01.7568093Z               "line": 60
2026-06-21T09:42:01.7568689Z             },
2026-06-21T09:42:01.7569304Z             {
2026-06-21T09:42:01.7569961Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:42:01.7570813Z               "line": 82
2026-06-21T09:42:01.7571418Z             },
2026-06-21T09:42:01.7571957Z             {
2026-06-21T09:42:01.7572615Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:42:01.7573456Z               "line": 94
2026-06-21T09:42:01.7574047Z             },
2026-06-21T09:42:01.7574581Z             {
2026-06-21T09:42:01.7575225Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:42:01.7576075Z               "line": 96
2026-06-21T09:42:01.7576675Z             },
2026-06-21T09:42:01.7577200Z             {
2026-06-21T09:42:01.7577864Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-21T09:42:01.7578715Z               "line": 44
2026-06-21T09:42:01.7579392Z             },
2026-06-21T09:42:01.7579931Z             {
2026-06-21T09:42:01.7580560Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T09:42:01.7581382Z               "line": 20
2026-06-21T09:42:01.7581988Z             },
2026-06-21T09:42:01.7582526Z             {
2026-06-21T09:42:01.7583151Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T09:42:01.7583983Z               "line": 30
2026-06-21T09:42:01.7584574Z             },
2026-06-21T09:42:01.7585107Z             {
2026-06-21T09:42:01.7585741Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T09:42:01.7586568Z               "line": 50
2026-06-21T09:42:01.7587193Z             },
2026-06-21T09:42:01.7587726Z             {
2026-06-21T09:42:01.7588351Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7589222Z               "line": 28
2026-06-21T09:42:01.7589820Z             },
2026-06-21T09:42:01.7590349Z             {
2026-06-21T09:42:01.7590964Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7591780Z               "line": 126
2026-06-21T09:42:01.7592390Z             },
2026-06-21T09:42:01.7592925Z             {
2026-06-21T09:42:01.7593551Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7594366Z               "line": 161
2026-06-21T09:42:01.7594971Z             },
2026-06-21T09:42:01.7595501Z             {
2026-06-21T09:42:01.7596126Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7596936Z               "line": 202
2026-06-21T09:42:01.7597543Z             },
2026-06-21T09:42:01.7598072Z             {
2026-06-21T09:42:01.7598693Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7599611Z               "line": 213
2026-06-21T09:42:01.7600222Z             },
2026-06-21T09:42:01.7600751Z             {
2026-06-21T09:42:01.7601370Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7602178Z               "line": 238
2026-06-21T09:42:01.7602793Z             },
2026-06-21T09:42:01.7603331Z             {
2026-06-21T09:42:01.7603952Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7604761Z               "line": 261
2026-06-21T09:42:01.7605360Z             },
2026-06-21T09:42:01.7605889Z             {
2026-06-21T09:42:01.7606523Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.7607347Z               "line": 86
2026-06-21T09:42:01.7607937Z             }
2026-06-21T09:42:01.7608474Z           ]
2026-06-21T09:42:01.7609076Z         },
2026-06-21T09:42:01.7609700Z         "int": {
2026-06-21T09:42:01.7610268Z           "complete": true,
2026-06-21T09:42:01.7611029Z           "evidence": [
2026-06-21T09:42:01.7611617Z             {
2026-06-21T09:42:01.7612283Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:42:01.7613134Z               "line": 285
2026-06-21T09:42:01.7613750Z             },
2026-06-21T09:42:01.7614278Z             {
2026-06-21T09:42:01.7614923Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T09:42:01.7615758Z               "line": 145
2026-06-21T09:42:01.7616364Z             },
2026-06-21T09:42:01.7616903Z             {
2026-06-21T09:42:01.7617543Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.7618386Z               "line": 684
2026-06-21T09:42:01.7619063Z             },
2026-06-21T09:42:01.7619593Z             {
2026-06-21T09:42:01.7620246Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.7621085Z               "line": 1102
2026-06-21T09:42:01.7621705Z             }
2026-06-21T09:42:01.7622228Z           ]
2026-06-21T09:42:01.7622748Z         },
2026-06-21T09:42:01.7627662Z         "unit": {
2026-06-21T09:42:01.7628286Z           "complete": true,
2026-06-21T09:42:01.7629057Z           "evidence": [
2026-06-21T09:42:01.7629677Z             {
2026-06-21T09:42:01.7630321Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7631139Z               "line": 572
2026-06-21T09:42:01.7631754Z             },
2026-06-21T09:42:01.7632289Z             {
2026-06-21T09:42:01.7632914Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7633734Z               "line": 636
2026-06-21T09:42:01.7634335Z             },
2026-06-21T09:42:01.7634870Z             {
2026-06-21T09:42:01.7635500Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7636341Z               "line": 740
2026-06-21T09:42:01.7636954Z             },
2026-06-21T09:42:01.7637494Z             {
2026-06-21T09:42:01.7638146Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7639032Z               "line": 772
2026-06-21T09:42:01.7639632Z             },
2026-06-21T09:42:01.7640170Z             {
2026-06-21T09:42:01.7640794Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7641633Z               "line": 840
2026-06-21T09:42:01.7642248Z             },
2026-06-21T09:42:01.7642782Z             {
2026-06-21T09:42:01.7643412Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7644228Z               "line": 898
2026-06-21T09:42:01.7644834Z             },
2026-06-21T09:42:01.7645378Z             {
2026-06-21T09:42:01.7646013Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7646835Z               "line": 1173
2026-06-21T09:42:01.7647443Z             },
2026-06-21T09:42:01.7647973Z             {
2026-06-21T09:42:01.7648631Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:42:01.7649568Z               "line": 157
2026-06-21T09:42:01.7650167Z             },
2026-06-21T09:42:01.7650691Z             {
2026-06-21T09:42:01.7651354Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:42:01.7652203Z               "line": 250
2026-06-21T09:42:01.7652817Z             },
2026-06-21T09:42:01.7653347Z             {
2026-06-21T09:42:01.7654006Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:42:01.7654850Z               "line": 273
2026-06-21T09:42:01.7655451Z             },
2026-06-21T09:42:01.7655985Z             {
2026-06-21T09:42:01.7656634Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:42:01.7657509Z               "line": 355
2026-06-21T09:42:01.7658117Z             },
2026-06-21T09:42:01.7658647Z             {
2026-06-21T09:42:01.7659367Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:42:01.7660208Z               "line": 392
2026-06-21T09:42:01.7660804Z             },
2026-06-21T09:42:01.7661504Z             {
2026-06-21T09:42:01.7662172Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T09:42:01.7663006Z               "line": 131
2026-06-21T09:42:01.7663716Z             },
2026-06-21T09:42:01.7664246Z             {
2026-06-21T09:42:01.7664866Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T09:42:01.7665668Z               "line": 72
2026-06-21T09:42:01.7666254Z             },
2026-06-21T09:42:01.7666774Z             {
2026-06-21T09:42:01.7667399Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T09:42:01.7668215Z               "line": 97
2026-06-21T09:42:01.7668802Z             },
2026-06-21T09:42:01.7669412Z             {
2026-06-21T09:42:01.7670056Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7670853Z               "line": 379
2026-06-21T09:42:01.7671454Z             },
2026-06-21T09:42:01.7671979Z             {
2026-06-21T09:42:01.7672599Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7673422Z               "line": 417
2026-06-21T09:42:01.7674019Z             },
2026-06-21T09:42:01.7674548Z             {
2026-06-21T09:42:01.7675174Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7675989Z               "line": 433
2026-06-21T09:42:01.7676589Z             },
2026-06-21T09:42:01.7677124Z             {
2026-06-21T09:42:01.7677750Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7678549Z               "line": 472
2026-06-21T09:42:01.7679262Z             },
2026-06-21T09:42:01.7679795Z             {
2026-06-21T09:42:01.7680415Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7681216Z               "line": 489
2026-06-21T09:42:01.7681819Z             },
2026-06-21T09:42:01.7682348Z             {
2026-06-21T09:42:01.7682973Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7683785Z               "line": 517
2026-06-21T09:42:01.7684388Z             },
2026-06-21T09:42:01.7684922Z             {
2026-06-21T09:42:01.7685552Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:42:01.7686351Z               "line": 548
2026-06-21T09:42:01.7686960Z             },
2026-06-21T09:42:01.7687483Z             {
2026-06-21T09:42:01.7688104Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.7688916Z               "line": 745
2026-06-21T09:42:01.7689613Z             }
2026-06-21T09:42:01.7690137Z           ]
2026-06-21T09:42:01.7690638Z         }
2026-06-21T09:42:01.7691139Z       }
2026-06-21T09:42:01.7691628Z     },
2026-06-21T09:42:01.7692117Z     {
2026-06-21T09:42:01.7692622Z       "id": "REQ-NOTIF-2",
2026-06-21T09:42:01.7693828Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-21T09:42:01.7695153Z       "requiredStages": [
2026-06-21T09:42:01.7695773Z         "doc",
2026-06-21T09:42:01.7696312Z         "impl",
2026-06-21T09:42:01.7696859Z         "unit",
2026-06-21T09:42:01.7697400Z         "int"
2026-06-21T09:42:01.7697921Z       ],
2026-06-21T09:42:01.7698435Z       "stages": {
2026-06-21T09:42:01.7699060Z         "doc": {
2026-06-21T09:42:01.7699640Z           "complete": true,
2026-06-21T09:42:01.7700286Z           "evidence": [
2026-06-21T09:42:01.7700874Z             {
2026-06-21T09:42:01.7701437Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.7702136Z               "line": 509
2026-06-21T09:42:01.7702750Z             },
2026-06-21T09:42:01.7703278Z             {
2026-06-21T09:42:01.7703850Z               "path": "docs/MANIFEST.md",
2026-06-21T09:42:01.7704586Z               "line": 123
2026-06-21T09:42:01.7705188Z             }
2026-06-21T09:42:01.7705723Z           ]
2026-06-21T09:42:01.7706233Z         },
2026-06-21T09:42:01.7706477Z         "impl": {
2026-06-21T09:42:01.7706733Z           "complete": true,
2026-06-21T09:42:01.7706981Z           "evidence": [
2026-06-21T09:42:01.7707216Z             {
2026-06-21T09:42:01.7707556Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7707913Z               "line": 287
2026-06-21T09:42:01.7708147Z             },
2026-06-21T09:42:01.7708467Z             {
2026-06-21T09:42:01.7708810Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7709115Z               "line": 301
2026-06-21T09:42:01.7709359Z             },
2026-06-21T09:42:01.7709596Z             {
2026-06-21T09:42:01.7709935Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7710182Z               "line": 326
2026-06-21T09:42:01.7710419Z             },
2026-06-21T09:42:01.7710661Z             {
2026-06-21T09:42:01.7711010Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.7711252Z               "line": 239
2026-06-21T09:42:01.7711485Z             },
2026-06-21T09:42:01.7711719Z             {
2026-06-21T09:42:01.7712071Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.7712317Z               "line": 95
2026-06-21T09:42:01.7712555Z             },
2026-06-21T09:42:01.7712791Z             {
2026-06-21T09:42:01.7713084Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7713343Z               "line": 2225
2026-06-21T09:42:01.7713577Z             },
2026-06-21T09:42:01.7713814Z             {
2026-06-21T09:42:01.7714105Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7714357Z               "line": 2274
2026-06-21T09:42:01.7714591Z             },
2026-06-21T09:42:01.7714826Z             {
2026-06-21T09:42:01.7715121Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7715369Z               "line": 2353
2026-06-21T09:42:01.7715611Z             },
2026-06-21T09:42:01.7715835Z             {
2026-06-21T09:42:01.7716136Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7716379Z               "line": 2392
2026-06-21T09:42:01.7716621Z             }
2026-06-21T09:42:01.7716860Z           ]
2026-06-21T09:42:01.7717090Z         },
2026-06-21T09:42:01.7717328Z         "int": {
2026-06-21T09:42:01.7717599Z           "complete": true,
2026-06-21T09:42:01.7717851Z           "evidence": [
2026-06-21T09:42:01.7718088Z             {
2026-06-21T09:42:01.7718455Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.7718707Z               "line": 810
2026-06-21T09:42:01.7718940Z             },
2026-06-21T09:42:01.7719251Z             {
2026-06-21T09:42:01.7719594Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.7719846Z               "line": 1345
2026-06-21T09:42:01.7720080Z             }
2026-06-21T09:42:01.7720314Z           ]
2026-06-21T09:42:01.7720548Z         },
2026-06-21T09:42:01.7720784Z         "unit": {
2026-06-21T09:42:01.7721035Z           "complete": true,
2026-06-21T09:42:01.7721289Z           "evidence": [
2026-06-21T09:42:01.7721522Z             {
2026-06-21T09:42:01.7721856Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7722103Z               "line": 1022
2026-06-21T09:42:01.7722346Z             },
2026-06-21T09:42:01.7722585Z             {
2026-06-21T09:42:01.7722928Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.7723182Z               "line": 1090
2026-06-21T09:42:01.7723418Z             },
2026-06-21T09:42:01.7723654Z             {
2026-06-21T09:42:01.7723945Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7724198Z               "line": 8210
2026-06-21T09:42:01.7724432Z             },
2026-06-21T09:42:01.7724674Z             {
2026-06-21T09:42:01.7724965Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7725223Z               "line": 8265
2026-06-21T09:42:01.7725452Z             }
2026-06-21T09:42:01.7725686Z           ]
2026-06-21T09:42:01.7725929Z         }
2026-06-21T09:42:01.7726157Z       }
2026-06-21T09:42:01.7726386Z     },
2026-06-21T09:42:01.7726609Z     {
2026-06-21T09:42:01.7726862Z       "id": "REQ-PAIR-1",
2026-06-21T09:42:01.7727176Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-21T09:42:01.7727444Z       "requiredStages": [
2026-06-21T09:42:01.7727792Z         "impl",
2026-06-21T09:42:01.7728030Z         "unit",
2026-06-21T09:42:01.7728270Z         "int"
2026-06-21T09:42:01.7728592Z       ],
2026-06-21T09:42:01.7728842Z       "stages": {
2026-06-21T09:42:01.7729167Z         "doc": {
2026-06-21T09:42:01.7729424Z           "complete": false,
2026-06-21T09:42:01.7729672Z           "evidence": []
2026-06-21T09:42:01.7729897Z         },
2026-06-21T09:42:01.7730145Z         "impl": {
2026-06-21T09:42:01.7730402Z           "complete": true,
2026-06-21T09:42:01.7730654Z           "evidence": [
2026-06-21T09:42:01.7730874Z             {
2026-06-21T09:42:01.7731269Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.7731511Z               "line": 27
2026-06-21T09:42:01.7731733Z             },
2026-06-21T09:42:01.7731976Z             {
2026-06-21T09:42:01.7732353Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.7732611Z               "line": 88
2026-06-21T09:42:01.7732897Z             },
2026-06-21T09:42:01.7733117Z             {
2026-06-21T09:42:01.7733502Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.7733742Z               "line": 110
2026-06-21T09:42:01.7733983Z             },
2026-06-21T09:42:01.7734214Z             {
2026-06-21T09:42:01.7734596Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.7734844Z               "line": 153
2026-06-21T09:42:01.7735073Z             },
2026-06-21T09:42:01.7735302Z             {
2026-06-21T09:42:01.7735674Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.7735932Z               "line": 182
2026-06-21T09:42:01.7736169Z             },
2026-06-21T09:42:01.7736407Z             {
2026-06-21T09:42:01.7736783Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:42:01.7737032Z               "line": 29
2026-06-21T09:42:01.7737271Z             },
2026-06-21T09:42:01.7737504Z             {
2026-06-21T09:42:01.7737938Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:42:01.7738181Z               "line": 31
2026-06-21T09:42:01.7738419Z             },
2026-06-21T09:42:01.7738657Z             {
2026-06-21T09:42:01.7739119Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7739373Z               "line": 44
2026-06-21T09:42:01.7739617Z             },
2026-06-21T09:42:01.7739851Z             {
2026-06-21T09:42:01.7740209Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7740467Z               "line": 171
2026-06-21T09:42:01.7740705Z             },
2026-06-21T09:42:01.7740933Z             {
2026-06-21T09:42:01.7741305Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7741548Z               "line": 376
2026-06-21T09:42:01.7741791Z             }
2026-06-21T09:42:01.7742024Z           ]
2026-06-21T09:42:01.7742269Z         },
2026-06-21T09:42:01.7742513Z         "int": {
2026-06-21T09:42:01.7742776Z           "complete": true,
2026-06-21T09:42:01.7743028Z           "evidence": [
2026-06-21T09:42:01.7743262Z             {
2026-06-21T09:42:01.7743630Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.7743877Z               "line": 645
2026-06-21T09:42:01.7744125Z             },
2026-06-21T09:42:01.7744354Z             {
2026-06-21T09:42:01.7744708Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.7744961Z               "line": 887
2026-06-21T09:42:01.7745194Z             }
2026-06-21T09:42:01.7745432Z           ]
2026-06-21T09:42:01.7745671Z         },
2026-06-21T09:42:01.7745914Z         "unit": {
2026-06-21T09:42:01.7746178Z           "complete": true,
2026-06-21T09:42:01.7746424Z           "evidence": [
2026-06-21T09:42:01.7746663Z             {
2026-06-21T09:42:01.7747039Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.7747291Z               "line": 236
2026-06-21T09:42:01.7747530Z             },
2026-06-21T09:42:01.7747883Z             {
2026-06-21T09:42:01.7748273Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:42:01.7748650Z               "line": 349
2026-06-21T09:42:01.7748889Z             },
2026-06-21T09:42:01.7749184Z             {
2026-06-21T09:42:01.7749550Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:42:01.7749797Z               "line": 194
2026-06-21T09:42:01.7750030Z             },
2026-06-21T09:42:01.7750258Z             {
2026-06-21T09:42:01.7750626Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:42:01.7750873Z               "line": 216
2026-06-21T09:42:01.7751098Z             },
2026-06-21T09:42:01.7751327Z             {
2026-06-21T09:42:01.7751699Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:42:01.7751953Z               "line": 230
2026-06-21T09:42:01.7752176Z             },
2026-06-21T09:42:01.7752403Z             {
2026-06-21T09:42:01.7752777Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:42:01.7753012Z               "line": 242
2026-06-21T09:42:01.7753260Z             },
2026-06-21T09:42:01.7753488Z             {
2026-06-21T09:42:01.7753851Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:42:01.7754093Z               "line": 256
2026-06-21T09:42:01.7754327Z             },
2026-06-21T09:42:01.7754566Z             {
2026-06-21T09:42:01.7754928Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:42:01.7755184Z               "line": 270
2026-06-21T09:42:01.7755416Z             },
2026-06-21T09:42:01.7755640Z             {
2026-06-21T09:42:01.7756006Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:42:01.7756255Z               "line": 277
2026-06-21T09:42:01.7756489Z             },
2026-06-21T09:42:01.7756718Z             {
2026-06-21T09:42:01.7757090Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:42:01.7757338Z               "line": 295
2026-06-21T09:42:01.7757566Z             },
2026-06-21T09:42:01.7757814Z             {
2026-06-21T09:42:01.7758176Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7758424Z               "line": 968
2026-06-21T09:42:01.7758653Z             },
2026-06-21T09:42:01.7758880Z             {
2026-06-21T09:42:01.7759354Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7759603Z               "line": 1051
2026-06-21T09:42:01.7759830Z             },
2026-06-21T09:42:01.7760064Z             {
2026-06-21T09:42:01.7760437Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7760682Z               "line": 1121
2026-06-21T09:42:01.7760909Z             },
2026-06-21T09:42:01.7761147Z             {
2026-06-21T09:42:01.7761516Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7761772Z               "line": 1182
2026-06-21T09:42:01.7762011Z             },
2026-06-21T09:42:01.7762250Z             {
2026-06-21T09:42:01.7762616Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7762866Z               "line": 1238
2026-06-21T09:42:01.7763102Z             },
2026-06-21T09:42:01.7763332Z             {
2026-06-21T09:42:01.7763704Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7763952Z               "line": 1457
2026-06-21T09:42:01.7764191Z             }
2026-06-21T09:42:01.7764430Z           ]
2026-06-21T09:42:01.7764663Z         }
2026-06-21T09:42:01.7764902Z       }
2026-06-21T09:42:01.7765126Z     },
2026-06-21T09:42:01.7765355Z     {
2026-06-21T09:42:01.7765615Z       "id": "REQ-PAIR-2",
2026-06-21T09:42:01.7766014Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-21T09:42:01.7766276Z       "requiredStages": [],
2026-06-21T09:42:01.7766519Z       "stages": {
2026-06-21T09:42:01.7766763Z         "doc": {
2026-06-21T09:42:01.7767011Z           "complete": false,
2026-06-21T09:42:01.7767373Z           "evidence": []
2026-06-21T09:42:01.7767608Z         },
2026-06-21T09:42:01.7767840Z         "impl": {
2026-06-21T09:42:01.7768209Z           "complete": false,
2026-06-21T09:42:01.7768454Z           "evidence": []
2026-06-21T09:42:01.7768693Z         },
2026-06-21T09:42:01.7768927Z         "int": {
2026-06-21T09:42:01.7769275Z           "complete": false,
2026-06-21T09:42:01.7769523Z           "evidence": []
2026-06-21T09:42:01.7769760Z         },
2026-06-21T09:42:01.7769999Z         "unit": {
2026-06-21T09:42:01.7770257Z           "complete": false,
2026-06-21T09:42:01.7770501Z           "evidence": []
2026-06-21T09:42:01.7770728Z         }
2026-06-21T09:42:01.7770959Z       }
2026-06-21T09:42:01.7771184Z     },
2026-06-21T09:42:01.7771407Z     {
2026-06-21T09:42:01.7771664Z       "id": "REQ-PAIR-3",
2026-06-21T09:42:01.7772081Z       "title": "Fetch current pairing code from any paired node",
2026-06-21T09:42:01.7772347Z       "requiredStages": [
2026-06-21T09:42:01.7772580Z         "impl",
2026-06-21T09:42:01.7772828Z         "unit"
2026-06-21T09:42:01.7773054Z       ],
2026-06-21T09:42:01.7773301Z       "stages": {
2026-06-21T09:42:01.7773547Z         "doc": {
2026-06-21T09:42:01.7773799Z           "complete": false,
2026-06-21T09:42:01.7774056Z           "evidence": []
2026-06-21T09:42:01.7774293Z         },
2026-06-21T09:42:01.7774522Z         "impl": {
2026-06-21T09:42:01.7774766Z           "complete": true,
2026-06-21T09:42:01.7775010Z           "evidence": [
2026-06-21T09:42:01.7775252Z             {
2026-06-21T09:42:01.7775538Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7775786Z               "line": 3259
2026-06-21T09:42:01.7776025Z             },
2026-06-21T09:42:01.7776262Z             {
2026-06-21T09:42:01.7776551Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7776803Z               "line": 3328
2026-06-21T09:42:01.7777037Z             },
2026-06-21T09:42:01.7777271Z             {
2026-06-21T09:42:01.7777572Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7777819Z               "line": 3709
2026-06-21T09:42:01.7778057Z             },
2026-06-21T09:42:01.7778295Z             {
2026-06-21T09:42:01.7778600Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7778850Z               "line": 4961
2026-06-21T09:42:01.7779158Z             }
2026-06-21T09:42:01.7779400Z           ]
2026-06-21T09:42:01.7779634Z         },
2026-06-21T09:42:01.7779873Z         "int": {
2026-06-21T09:42:01.7780126Z           "complete": false,
2026-06-21T09:42:01.7780383Z           "evidence": []
2026-06-21T09:42:01.7780612Z         },
2026-06-21T09:42:01.7780845Z         "unit": {
2026-06-21T09:42:01.7781113Z           "complete": true,
2026-06-21T09:42:01.7781354Z           "evidence": [
2026-06-21T09:42:01.7781595Z             {
2026-06-21T09:42:01.7781882Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7782135Z               "line": 9964
2026-06-21T09:42:01.7782364Z             },
2026-06-21T09:42:01.7782607Z             {
2026-06-21T09:42:01.7782907Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7783150Z               "line": 10179
2026-06-21T09:42:01.7783393Z             },
2026-06-21T09:42:01.7783628Z             {
2026-06-21T09:42:01.7783929Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7784183Z               "line": 10838
2026-06-21T09:42:01.7784415Z             },
2026-06-21T09:42:01.7784645Z             {
2026-06-21T09:42:01.7784931Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7785188Z               "line": 10857
2026-06-21T09:42:01.7785420Z             },
2026-06-21T09:42:01.7785664Z             {
2026-06-21T09:42:01.7785955Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7786204Z               "line": 10881
2026-06-21T09:42:01.7786442Z             },
2026-06-21T09:42:01.7786669Z             {
2026-06-21T09:42:01.7786967Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7787216Z               "line": 10900
2026-06-21T09:42:01.7787574Z             },
2026-06-21T09:42:01.7787812Z             {
2026-06-21T09:42:01.7788098Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7788437Z               "line": 10913
2026-06-21T09:42:01.7788670Z             },
2026-06-21T09:42:01.7788913Z             {
2026-06-21T09:42:01.7789280Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7789536Z               "line": 10922
2026-06-21T09:42:01.7789766Z             }
2026-06-21T09:42:01.7790004Z           ]
2026-06-21T09:42:01.7790237Z         }
2026-06-21T09:42:01.7790462Z       }
2026-06-21T09:42:01.7790687Z     },
2026-06-21T09:42:01.7790914Z     {
2026-06-21T09:42:01.7791172Z       "id": "REQ-PAIR-4",
2026-06-21T09:42:01.7791491Z       "title": "Subnet naming on first pairing",
2026-06-21T09:42:01.7791753Z       "requiredStages": [
2026-06-21T09:42:01.7791986Z         "impl",
2026-06-21T09:42:01.7792218Z         "unit"
2026-06-21T09:42:01.7792451Z       ],
2026-06-21T09:42:01.7792690Z       "stages": {
2026-06-21T09:42:01.7792929Z         "doc": {
2026-06-21T09:42:01.7793191Z           "complete": false,
2026-06-21T09:42:01.7793447Z           "evidence": []
2026-06-21T09:42:01.7793682Z         },
2026-06-21T09:42:01.7793920Z         "impl": {
2026-06-21T09:42:01.7794179Z           "complete": true,
2026-06-21T09:42:01.7794431Z           "evidence": [
2026-06-21T09:42:01.7794668Z             {
2026-06-21T09:42:01.7795004Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:42:01.7795248Z               "line": 174
2026-06-21T09:42:01.7795491Z             }
2026-06-21T09:42:01.7795724Z           ]
2026-06-21T09:42:01.7795962Z         },
2026-06-21T09:42:01.7796196Z         "int": {
2026-06-21T09:42:01.7796463Z           "complete": false,
2026-06-21T09:42:01.7796712Z           "evidence": []
2026-06-21T09:42:01.7796935Z         },
2026-06-21T09:42:01.7797178Z         "unit": {
2026-06-21T09:42:01.7797434Z           "complete": true,
2026-06-21T09:42:01.7797690Z           "evidence": [
2026-06-21T09:42:01.7797928Z             {
2026-06-21T09:42:01.7798300Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7798557Z               "line": 1294
2026-06-21T09:42:01.7798786Z             }
2026-06-21T09:42:01.7799101Z           ]
2026-06-21T09:42:01.7799326Z         }
2026-06-21T09:42:01.7799559Z       }
2026-06-21T09:42:01.7799783Z     },
2026-06-21T09:42:01.7800017Z     {
2026-06-21T09:42:01.7800273Z       "id": "REQ-PAIR-5",
2026-06-21T09:42:01.7801213Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-21T09:42:01.7801470Z       "requiredStages": [
2026-06-21T09:42:01.7801708Z         "impl",
2026-06-21T09:42:01.7801942Z         "unit",
2026-06-21T09:42:01.7802177Z         "int"
2026-06-21T09:42:01.7802408Z       ],
2026-06-21T09:42:01.7802639Z       "stages": {
2026-06-21T09:42:01.7802874Z         "doc": {
2026-06-21T09:42:01.7803136Z           "complete": false,
2026-06-21T09:42:01.7803378Z           "evidence": []
2026-06-21T09:42:01.7803612Z         },
2026-06-21T09:42:01.7803846Z         "impl": {
2026-06-21T09:42:01.7804109Z           "complete": true,
2026-06-21T09:42:01.7804351Z           "evidence": [
2026-06-21T09:42:01.7804585Z             {
2026-06-21T09:42:01.7804967Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:42:01.7805200Z               "line": 44
2026-06-21T09:42:01.7805441Z             },
2026-06-21T09:42:01.7805664Z             {
2026-06-21T09:42:01.7806046Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:42:01.7806289Z               "line": 96
2026-06-21T09:42:01.7806527Z             },
2026-06-21T09:42:01.7806756Z             {
2026-06-21T09:42:01.7807127Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:42:01.7807376Z               "line": 107
2026-06-21T09:42:01.7807611Z             },
2026-06-21T09:42:01.7807851Z             {
2026-06-21T09:42:01.7808226Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:42:01.7808575Z               "line": 124
2026-06-21T09:42:01.7808913Z             },
2026-06-21T09:42:01.7809233Z             {
2026-06-21T09:42:01.7809619Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:42:01.7809867Z               "line": 155
2026-06-21T09:42:01.7810100Z             },
2026-06-21T09:42:01.7810338Z             {
2026-06-21T09:42:01.7810709Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:42:01.7810958Z               "line": 195
2026-06-21T09:42:01.7811192Z             },
2026-06-21T09:42:01.7811425Z             {
2026-06-21T09:42:01.7811802Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:42:01.7812044Z               "line": 251
2026-06-21T09:42:01.7812278Z             },
2026-06-21T09:42:01.7812507Z             {
2026-06-21T09:42:01.7812926Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:42:01.7813167Z               "line": 33
2026-06-21T09:42:01.7813415Z             },
2026-06-21T09:42:01.7813653Z             {
2026-06-21T09:42:01.7814073Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:42:01.7814321Z               "line": 45
2026-06-21T09:42:01.7814544Z             },
2026-06-21T09:42:01.7818643Z             {
2026-06-21T09:42:01.7819239Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:42:01.7819526Z               "line": 59
2026-06-21T09:42:01.7819760Z             },
2026-06-21T09:42:01.7819997Z             {
2026-06-21T09:42:01.7820384Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7820636Z               "line": 376
2026-06-21T09:42:01.7820870Z             }
2026-06-21T09:42:01.7821105Z           ]
2026-06-21T09:42:01.7821345Z         },
2026-06-21T09:42:01.7821583Z         "int": {
2026-06-21T09:42:01.7821842Z           "complete": true,
2026-06-21T09:42:01.7822090Z           "evidence": [
2026-06-21T09:42:01.7822338Z             {
2026-06-21T09:42:01.7822725Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.7822968Z               "line": 887
2026-06-21T09:42:01.7823210Z             },
2026-06-21T09:42:01.7823448Z             {
2026-06-21T09:42:01.7823822Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:42:01.7824080Z               "line": 342
2026-06-21T09:42:01.7824300Z             }
2026-06-21T09:42:01.7824522Z           ]
2026-06-21T09:42:01.7824747Z         },
2026-06-21T09:42:01.7824985Z         "unit": {
2026-06-21T09:42:01.7825248Z           "complete": true,
2026-06-21T09:42:01.7825496Z           "evidence": [
2026-06-21T09:42:01.7825729Z             {
2026-06-21T09:42:01.7826111Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:42:01.7826358Z               "line": 293
2026-06-21T09:42:01.7826590Z             },
2026-06-21T09:42:01.7826827Z             {
2026-06-21T09:42:01.7827200Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:42:01.7827462Z               "line": 304
2026-06-21T09:42:01.7827699Z             },
2026-06-21T09:42:01.7827933Z             {
2026-06-21T09:42:01.7828315Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:42:01.7828548Z               "line": 406
2026-06-21T09:42:01.7828783Z             },
2026-06-21T09:42:01.7829072Z             {
2026-06-21T09:42:01.7829513Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:42:01.7829767Z               "line": 72
2026-06-21T09:42:01.7829995Z             },
2026-06-21T09:42:01.7830233Z             {
2026-06-21T09:42:01.7830644Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:42:01.7830886Z               "line": 82
2026-06-21T09:42:01.7831129Z             },
2026-06-21T09:42:01.7831364Z             {
2026-06-21T09:42:01.7831792Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:42:01.7832220Z               "line": 100
2026-06-21T09:42:01.7832459Z             },
2026-06-21T09:42:01.7832688Z             {
2026-06-21T09:42:01.7833199Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:42:01.7833441Z               "line": 110
2026-06-21T09:42:01.7833674Z             },
2026-06-21T09:42:01.7833914Z             {
2026-06-21T09:42:01.7834330Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:42:01.7834583Z               "line": 125
2026-06-21T09:42:01.7834825Z             },
2026-06-21T09:42:01.7835059Z             {
2026-06-21T09:42:01.7835451Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7835693Z               "line": 1044
2026-06-21T09:42:01.7835937Z             },
2026-06-21T09:42:01.7836171Z             {
2026-06-21T09:42:01.7836551Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7836801Z               "line": 1110
2026-06-21T09:42:01.7837032Z             },
2026-06-21T09:42:01.7837273Z             {
2026-06-21T09:42:01.7837639Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.7837892Z               "line": 1357
2026-06-21T09:42:01.7838127Z             }
2026-06-21T09:42:01.7838361Z           ]
2026-06-21T09:42:01.7838598Z         }
2026-06-21T09:42:01.7838827Z       }
2026-06-21T09:42:01.7839142Z     },
2026-06-21T09:42:01.7839372Z     {
2026-06-21T09:42:01.7839632Z       "id": "REQ-PAIR-6",
2026-06-21T09:42:01.7840421Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-21T09:42:01.7840689Z       "requiredStages": [
2026-06-21T09:42:01.7840928Z         "impl",
2026-06-21T09:42:01.7841160Z         "unit"
2026-06-21T09:42:01.7841394Z       ],
2026-06-21T09:42:01.7841623Z       "stages": {
2026-06-21T09:42:01.7841858Z         "doc": {
2026-06-21T09:42:01.7842115Z           "complete": false,
2026-06-21T09:42:01.7842371Z           "evidence": []
2026-06-21T09:42:01.7842605Z         },
2026-06-21T09:42:01.7842838Z         "impl": {
2026-06-21T09:42:01.7843086Z           "complete": true,
2026-06-21T09:42:01.7843338Z           "evidence": [
2026-06-21T09:42:01.7843568Z             {
2026-06-21T09:42:01.7843868Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7844121Z               "line": 3328
2026-06-21T09:42:01.7844364Z             },
2026-06-21T09:42:01.7844596Z             {
2026-06-21T09:42:01.7844895Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7845134Z               "line": 3709
2026-06-21T09:42:01.7845362Z             },
2026-06-21T09:42:01.7845595Z             {
2026-06-21T09:42:01.7845924Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.7846172Z               "line": 18
2026-06-21T09:42:01.7846406Z             },
2026-06-21T09:42:01.7846641Z             {
2026-06-21T09:42:01.7846961Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.7847207Z               "line": 49
2026-06-21T09:42:01.7847440Z             },
2026-06-21T09:42:01.7847668Z             {
2026-06-21T09:42:01.7847987Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.7848239Z               "line": 318
2026-06-21T09:42:01.7848476Z             }
2026-06-21T09:42:01.7848702Z           ]
2026-06-21T09:42:01.7848931Z         },
2026-06-21T09:42:01.7849241Z         "int": {
2026-06-21T09:42:01.7849493Z           "complete": false,
2026-06-21T09:42:01.7849740Z           "evidence": []
2026-06-21T09:42:01.7849978Z         },
2026-06-21T09:42:01.7850211Z         "unit": {
2026-06-21T09:42:01.7850452Z           "complete": true,
2026-06-21T09:42:01.7850705Z           "evidence": [
2026-06-21T09:42:01.7850939Z             {
2026-06-21T09:42:01.7851225Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7851464Z               "line": 10935
2026-06-21T09:42:01.7851692Z             },
2026-06-21T09:42:01.7851921Z             {
2026-06-21T09:42:01.7852211Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7852574Z               "line": 10952
2026-06-21T09:42:01.7852808Z             },
2026-06-21T09:42:01.7853147Z             {
2026-06-21T09:42:01.7853475Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.7853723Z               "line": 383
2026-06-21T09:42:01.7853951Z             },
2026-06-21T09:42:01.7854175Z             {
2026-06-21T09:42:01.7854495Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:42:01.7854743Z               "line": 392
2026-06-21T09:42:01.7854968Z             }
2026-06-21T09:42:01.7855204Z           ]
2026-06-21T09:42:01.7855436Z         }
2026-06-21T09:42:01.7855665Z       }
2026-06-21T09:42:01.7855893Z     },
2026-06-21T09:42:01.7856127Z     {
2026-06-21T09:42:01.7856385Z       "id": "REQ-PAIR-7",
2026-06-21T09:42:01.7856866Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-21T09:42:01.7857128Z       "requiredStages": [],
2026-06-21T09:42:01.7857371Z       "stages": {
2026-06-21T09:42:01.7857610Z         "doc": {
2026-06-21T09:42:01.7857873Z           "complete": false,
2026-06-21T09:42:01.7858128Z           "evidence": []
2026-06-21T09:42:01.7858369Z         },
2026-06-21T09:42:01.7858609Z         "impl": {
2026-06-21T09:42:01.7858871Z           "complete": false,
2026-06-21T09:42:01.7859190Z           "evidence": []
2026-06-21T09:42:01.7859428Z         },
2026-06-21T09:42:01.7859671Z         "int": {
2026-06-21T09:42:01.7859938Z           "complete": false,
2026-06-21T09:42:01.7860182Z           "evidence": []
2026-06-21T09:42:01.7860421Z         },
2026-06-21T09:42:01.7860662Z         "unit": {
2026-06-21T09:42:01.7860912Z           "complete": false,
2026-06-21T09:42:01.7861166Z           "evidence": []
2026-06-21T09:42:01.7861395Z         }
2026-06-21T09:42:01.7861632Z       }
2026-06-21T09:42:01.7861852Z     },
2026-06-21T09:42:01.7862091Z     {
2026-06-21T09:42:01.7862349Z       "id": "REQ-PAIR-8",
2026-06-21T09:42:01.7866235Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-21T09:42:01.7866521Z       "requiredStages": [
2026-06-21T09:42:01.7866768Z         "impl",
2026-06-21T09:42:01.7866992Z         "unit"
2026-06-21T09:42:01.7867231Z       ],
2026-06-21T09:42:01.7867475Z       "stages": {
2026-06-21T09:42:01.7867717Z         "doc": {
2026-06-21T09:42:01.7867974Z           "complete": false,
2026-06-21T09:42:01.7868217Z           "evidence": []
2026-06-21T09:42:01.7868462Z         },
2026-06-21T09:42:01.7868707Z         "impl": {
2026-06-21T09:42:01.7869034Z           "complete": true,
2026-06-21T09:42:01.7869282Z           "evidence": [
2026-06-21T09:42:01.7869521Z             {
2026-06-21T09:42:01.7869888Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.7870141Z               "line": 577
2026-06-21T09:42:01.7870384Z             },
2026-06-21T09:42:01.7870613Z             {
2026-06-21T09:42:01.7870995Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:42:01.7871241Z               "line": 22
2026-06-21T09:42:01.7871486Z             },
2026-06-21T09:42:01.7871722Z             {
2026-06-21T09:42:01.7872107Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:42:01.7872355Z               "line": 76
2026-06-21T09:42:01.7872589Z             },
2026-06-21T09:42:01.7872822Z             {
2026-06-21T09:42:01.7873195Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:42:01.7873446Z               "line": 127
2026-06-21T09:42:01.7873670Z             }
2026-06-21T09:42:01.7873910Z           ]
2026-06-21T09:42:01.7874146Z         },
2026-06-21T09:42:01.7874375Z         "int": {
2026-06-21T09:42:01.7874752Z           "complete": false,
2026-06-21T09:42:01.7874995Z           "evidence": []
2026-06-21T09:42:01.7875234Z         },
2026-06-21T09:42:01.7875562Z         "unit": {
2026-06-21T09:42:01.7875826Z           "complete": true,
2026-06-21T09:42:01.7876079Z           "evidence": [
2026-06-21T09:42:01.7876310Z             {
2026-06-21T09:42:01.7876699Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:42:01.7876942Z               "line": 183
2026-06-21T09:42:01.7877176Z             },
2026-06-21T09:42:01.7877410Z             {
2026-06-21T09:42:01.7877786Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:42:01.7878045Z               "line": 195
2026-06-21T09:42:01.7878282Z             },
2026-06-21T09:42:01.7878520Z             {
2026-06-21T09:42:01.7878888Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:42:01.7879205Z               "line": 211
2026-06-21T09:42:01.7879432Z             },
2026-06-21T09:42:01.7879681Z             {
2026-06-21T09:42:01.7880039Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:42:01.7880296Z               "line": 227
2026-06-21T09:42:01.7880530Z             }
2026-06-21T09:42:01.7880768Z           ]
2026-06-21T09:42:01.7880996Z         }
2026-06-21T09:42:01.7881222Z       }
2026-06-21T09:42:01.7881454Z     },
2026-06-21T09:42:01.7881692Z     {
2026-06-21T09:42:01.7881953Z       "id": "REQ-PICKER-1",
2026-06-21T09:42:01.7892818Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-21T09:42:01.7893118Z       "requiredStages": [
2026-06-21T09:42:01.7893356Z         "impl",
2026-06-21T09:42:01.7893589Z         "unit"
2026-06-21T09:42:01.7893823Z       ],
2026-06-21T09:42:01.7894067Z       "stages": {
2026-06-21T09:42:01.7894305Z         "doc": {
2026-06-21T09:42:01.7894557Z           "complete": false,
2026-06-21T09:42:01.7894824Z           "evidence": []
2026-06-21T09:42:01.7895063Z         },
2026-06-21T09:42:01.7895300Z         "impl": {
2026-06-21T09:42:01.7895571Z           "complete": true,
2026-06-21T09:42:01.7895815Z           "evidence": [
2026-06-21T09:42:01.7896054Z             {
2026-06-21T09:42:01.7896382Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.7896641Z               "line": 248
2026-06-21T09:42:01.7896875Z             },
2026-06-21T09:42:01.7897112Z             {
2026-06-21T09:42:01.7897445Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.7897690Z               "line": 263
2026-06-21T09:42:01.7897929Z             }
2026-06-21T09:42:01.7898168Z           ]
2026-06-21T09:42:01.7898410Z         },
2026-06-21T09:42:01.7898635Z         "int": {
2026-06-21T09:42:01.7898897Z           "complete": false,
2026-06-21T09:42:01.7899221Z           "evidence": []
2026-06-21T09:42:01.7899470Z         },
2026-06-21T09:42:01.7899717Z         "unit": {
2026-06-21T09:42:01.7900080Z           "complete": true,
2026-06-21T09:42:01.7900331Z           "evidence": [
2026-06-21T09:42:01.7900562Z             {
2026-06-21T09:42:01.7900986Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.7901244Z               "line": 476
2026-06-21T09:42:01.7901478Z             },
2026-06-21T09:42:01.7901708Z             {
2026-06-21T09:42:01.7902032Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.7902289Z               "line": 753
2026-06-21T09:42:01.7902527Z             },
2026-06-21T09:42:01.7902774Z             {
2026-06-21T09:42:01.7903119Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.7903368Z               "line": 886
2026-06-21T09:42:01.7903601Z             },
2026-06-21T09:42:01.7903830Z             {
2026-06-21T09:42:01.7904154Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:42:01.7904402Z               "line": 455
2026-06-21T09:42:01.7904650Z             }
2026-06-21T09:42:01.7904885Z           ]
2026-06-21T09:42:01.7905108Z         }
2026-06-21T09:42:01.7905346Z       }
2026-06-21T09:42:01.7905562Z     },
2026-06-21T09:42:01.7905803Z     {
2026-06-21T09:42:01.7906065Z       "id": "REQ-PICKER-2",
2026-06-21T09:42:01.7911643Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-21T09:42:01.7911924Z       "requiredStages": [
2026-06-21T09:42:01.7912161Z         "impl",
2026-06-21T09:42:01.7912396Z         "unit"
2026-06-21T09:42:01.7912640Z       ],
2026-06-21T09:42:01.7912874Z       "stages": {
2026-06-21T09:42:01.7913111Z         "doc": {
2026-06-21T09:42:01.7913377Z           "complete": false,
2026-06-21T09:42:01.7913633Z           "evidence": []
2026-06-21T09:42:01.7913866Z         },
2026-06-21T09:42:01.7914103Z         "impl": {
2026-06-21T09:42:01.7914366Z           "complete": true,
2026-06-21T09:42:01.7914610Z           "evidence": [
2026-06-21T09:42:01.7914854Z             {
2026-06-21T09:42:01.7915210Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.7915464Z               "line": 183
2026-06-21T09:42:01.7915697Z             },
2026-06-21T09:42:01.7915930Z             {
2026-06-21T09:42:01.7916263Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:42:01.7916498Z               "line": 296
2026-06-21T09:42:01.7916740Z             }
2026-06-21T09:42:01.7916977Z           ]
2026-06-21T09:42:01.7917207Z         },
2026-06-21T09:42:01.7917441Z         "int": {
2026-06-21T09:42:01.7917704Z           "complete": false,
2026-06-21T09:42:01.7917951Z           "evidence": []
2026-06-21T09:42:01.7918184Z         },
2026-06-21T09:42:01.7918432Z         "unit": {
2026-06-21T09:42:01.7918684Z           "complete": true,
2026-06-21T09:42:01.7918930Z           "evidence": [
2026-06-21T09:42:01.7919263Z             {
2026-06-21T09:42:01.7919617Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.7919869Z               "line": 655
2026-06-21T09:42:01.7920098Z             }
2026-06-21T09:42:01.7920337Z           ]
2026-06-21T09:42:01.7920572Z         }
2026-06-21T09:42:01.7920799Z       }
2026-06-21T09:42:01.7921032Z     },
2026-06-21T09:42:01.7921258Z     {
2026-06-21T09:42:01.7921518Z       "id": "REQ-PICKER-3",
2026-06-21T09:42:01.7928725Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-21T09:42:01.7929338Z       "requiredStages": [
2026-06-21T09:42:01.7929610Z         "impl",
2026-06-21T09:42:01.7929848Z         "unit"
2026-06-21T09:42:01.7930081Z       ],
2026-06-21T09:42:01.7930320Z       "stages": {
2026-06-21T09:42:01.7930558Z         "doc": {
2026-06-21T09:42:01.7930812Z           "complete": false,
2026-06-21T09:42:01.7931063Z           "evidence": []
2026-06-21T09:42:01.7931302Z         },
2026-06-21T09:42:01.7931559Z         "impl": {
2026-06-21T09:42:01.7931799Z           "complete": true,
2026-06-21T09:42:01.7932049Z           "evidence": [
2026-06-21T09:42:01.7932290Z             {
2026-06-21T09:42:01.7932619Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:42:01.7932868Z               "line": 124
2026-06-21T09:42:01.7933107Z             }
2026-06-21T09:42:01.7933349Z           ]
2026-06-21T09:42:01.7933582Z         },
2026-06-21T09:42:01.7933825Z         "int": {
2026-06-21T09:42:01.7934080Z           "complete": false,
2026-06-21T09:42:01.7934333Z           "evidence": []
2026-06-21T09:42:01.7934550Z         },
2026-06-21T09:42:01.7934786Z         "unit": {
2026-06-21T09:42:01.7935048Z           "complete": true,
2026-06-21T09:42:01.7935301Z           "evidence": [
2026-06-21T09:42:01.7935534Z             {
2026-06-21T09:42:01.7935868Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:42:01.7936116Z               "line": 369
2026-06-21T09:42:01.7936354Z             }
2026-06-21T09:42:01.7936594Z           ]
2026-06-21T09:42:01.7936831Z         }
2026-06-21T09:42:01.7937065Z       }
2026-06-21T09:42:01.7937295Z     },
2026-06-21T09:42:01.7937522Z     {
2026-06-21T09:42:01.7937788Z       "id": "REQ-PICKER-4",
2026-06-21T09:42:01.7943499Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-21T09:42:01.7943776Z       "requiredStages": [
2026-06-21T09:42:01.7944024Z         "impl",
2026-06-21T09:42:01.7944263Z         "unit"
2026-06-21T09:42:01.7944505Z       ],
2026-06-21T09:42:01.7944748Z       "stages": {
2026-06-21T09:42:01.7944987Z         "doc": {
2026-06-21T09:42:01.7945252Z           "complete": false,
2026-06-21T09:42:01.7945493Z           "evidence": []
2026-06-21T09:42:01.7945736Z         },
2026-06-21T09:42:01.7945976Z         "impl": {
2026-06-21T09:42:01.7946228Z           "complete": true,
2026-06-21T09:42:01.7946486Z           "evidence": [
2026-06-21T09:42:01.7946719Z             {
2026-06-21T09:42:01.7947082Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.7947329Z               "line": 353
2026-06-21T09:42:01.7947563Z             },
2026-06-21T09:42:01.7947783Z             {
2026-06-21T09:42:01.7948115Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:42:01.7948353Z               "line": 105
2026-06-21T09:42:01.7948587Z             }
2026-06-21T09:42:01.7948821Z           ]
2026-06-21T09:42:01.7949226Z         },
2026-06-21T09:42:01.7949465Z         "int": {
2026-06-21T09:42:01.7949718Z           "complete": false,
2026-06-21T09:42:01.7950062Z           "evidence": []
2026-06-21T09:42:01.7950303Z         },
2026-06-21T09:42:01.7950539Z         "unit": {
2026-06-21T09:42:01.7950806Z           "complete": true,
2026-06-21T09:42:01.7951059Z           "evidence": [
2026-06-21T09:42:01.7951293Z             {
2026-06-21T09:42:01.7951641Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.7951888Z               "line": 1246
2026-06-21T09:42:01.7952112Z             },
2026-06-21T09:42:01.7952346Z             {
2026-06-21T09:42:01.7952670Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:42:01.7952915Z               "line": 427
2026-06-21T09:42:01.7953145Z             }
2026-06-21T09:42:01.7953368Z           ]
2026-06-21T09:42:01.7953602Z         }
2026-06-21T09:42:01.7953835Z       }
2026-06-21T09:42:01.7954064Z     },
2026-06-21T09:42:01.7954308Z     {
2026-06-21T09:42:01.7954560Z       "id": "REQ-PICKER-5",
2026-06-21T09:42:01.7963659Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-21T09:42:01.7963971Z       "requiredStages": [
2026-06-21T09:42:01.7964201Z         "impl",
2026-06-21T09:42:01.7964439Z         "unit"
2026-06-21T09:42:01.7964681Z       ],
2026-06-21T09:42:01.7964924Z       "stages": {
2026-06-21T09:42:01.7965158Z         "doc": {
2026-06-21T09:42:01.7965412Z           "complete": false,
2026-06-21T09:42:01.7965674Z           "evidence": []
2026-06-21T09:42:01.7965902Z         },
2026-06-21T09:42:01.7966140Z         "impl": {
2026-06-21T09:42:01.7966396Z           "complete": true,
2026-06-21T09:42:01.7966647Z           "evidence": [
2026-06-21T09:42:01.7966880Z             {
2026-06-21T09:42:01.7967172Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7967425Z               "line": 1802
2026-06-21T09:42:01.7967659Z             }
2026-06-21T09:42:01.7967892Z           ]
2026-06-21T09:42:01.7968125Z         },
2026-06-21T09:42:01.7968369Z         "int": {
2026-06-21T09:42:01.7968627Z           "complete": false,
2026-06-21T09:42:01.7968875Z           "evidence": []
2026-06-21T09:42:01.7969173Z         },
2026-06-21T09:42:01.7969412Z         "unit": {
2026-06-21T09:42:01.7969665Z           "complete": true,
2026-06-21T09:42:01.7969904Z           "evidence": [
2026-06-21T09:42:01.7970122Z             {
2026-06-21T09:42:01.7970427Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.7970671Z               "line": 7526
2026-06-21T09:42:01.7970910Z             }
2026-06-21T09:42:01.7971139Z           ]
2026-06-21T09:42:01.7971371Z         }
2026-06-21T09:42:01.7971607Z       }
2026-06-21T09:42:01.7971827Z     },
2026-06-21T09:42:01.7972059Z     {
2026-06-21T09:42:01.7972384Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-21T09:42:01.7976433Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-21T09:42:01.7976905Z       "requiredStages": [],
2026-06-21T09:42:01.7977145Z       "stages": {
2026-06-21T09:42:01.7977393Z         "doc": {
2026-06-21T09:42:01.7977642Z           "complete": false,
2026-06-21T09:42:01.7977895Z           "evidence": []
2026-06-21T09:42:01.7978128Z         },
2026-06-21T09:42:01.7978366Z         "impl": {
2026-06-21T09:42:01.7978614Z           "complete": false,
2026-06-21T09:42:01.7978863Z           "evidence": []
2026-06-21T09:42:01.7979159Z         },
2026-06-21T09:42:01.7979402Z         "int": {
2026-06-21T09:42:01.7979657Z           "complete": false,
2026-06-21T09:42:01.7979910Z           "evidence": []
2026-06-21T09:42:01.7980144Z         },
2026-06-21T09:42:01.7980392Z         "unit": {
2026-06-21T09:42:01.7980644Z           "complete": false,
2026-06-21T09:42:01.7980902Z           "evidence": []
2026-06-21T09:42:01.7981141Z         }
2026-06-21T09:42:01.7981375Z       }
2026-06-21T09:42:01.7981602Z     },
2026-06-21T09:42:01.7981836Z     {
2026-06-21T09:42:01.7982125Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-21T09:42:01.7985387Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-21T09:42:01.7985664Z       "requiredStages": [
2026-06-21T09:42:01.7985908Z         "impl",
2026-06-21T09:42:01.7986135Z         "unit"
2026-06-21T09:42:01.7986373Z       ],
2026-06-21T09:42:01.7986612Z       "stages": {
2026-06-21T09:42:01.7986861Z         "doc": {
2026-06-21T09:42:01.7987119Z           "complete": false,
2026-06-21T09:42:01.7987364Z           "evidence": []
2026-06-21T09:42:01.7987605Z         },
2026-06-21T09:42:01.7987849Z         "impl": {
2026-06-21T09:42:01.7988107Z           "complete": true,
2026-06-21T09:42:01.7988353Z           "evidence": [
2026-06-21T09:42:01.7988693Z             {
2026-06-21T09:42:01.7989075Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:42:01.7989327Z               "line": 275
2026-06-21T09:42:01.7989570Z             }
2026-06-21T09:42:01.7989803Z           ]
2026-06-21T09:42:01.7990039Z         },
2026-06-21T09:42:01.7990274Z         "int": {
2026-06-21T09:42:01.7990537Z           "complete": false,
2026-06-21T09:42:01.7990781Z           "evidence": []
2026-06-21T09:42:01.7991014Z         },
2026-06-21T09:42:01.7991253Z         "unit": {
2026-06-21T09:42:01.7991514Z           "complete": true,
2026-06-21T09:42:01.7991758Z           "evidence": [
2026-06-21T09:42:01.7991996Z             {
2026-06-21T09:42:01.7992335Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:42:01.7992591Z               "line": 400
2026-06-21T09:42:01.7992831Z             }
2026-06-21T09:42:01.7993051Z           ]
2026-06-21T09:42:01.7993295Z         }
2026-06-21T09:42:01.7993519Z       }
2026-06-21T09:42:01.7993742Z     },
2026-06-21T09:42:01.7993976Z     {
2026-06-21T09:42:01.7994272Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-21T09:42:01.7998852Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-21T09:42:01.7999282Z       "requiredStages": [
2026-06-21T09:42:01.7999520Z         "impl",
2026-06-21T09:42:01.7999882Z         "unit"
2026-06-21T09:42:01.8000116Z       ],
2026-06-21T09:42:01.8000354Z       "stages": {
2026-06-21T09:42:01.8000589Z         "doc": {
2026-06-21T09:42:01.8000849Z           "complete": false,
2026-06-21T09:42:01.8001102Z           "evidence": []
2026-06-21T09:42:01.8001336Z         },
2026-06-21T09:42:01.8001584Z         "impl": {
2026-06-21T09:42:01.8001836Z           "complete": true,
2026-06-21T09:42:01.8002079Z           "evidence": [
2026-06-21T09:42:01.8002318Z             {
2026-06-21T09:42:01.8002656Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8002909Z               "line": 654
2026-06-21T09:42:01.8003137Z             }
2026-06-21T09:42:01.8003367Z           ]
2026-06-21T09:42:01.8003597Z         },
2026-06-21T09:42:01.8003841Z         "int": {
2026-06-21T09:42:01.8004099Z           "complete": false,
2026-06-21T09:42:01.8004350Z           "evidence": []
2026-06-21T09:42:01.8004589Z         },
2026-06-21T09:42:01.8004822Z         "unit": {
2026-06-21T09:42:01.8005081Z           "complete": true,
2026-06-21T09:42:01.8005329Z           "evidence": [
2026-06-21T09:42:01.8005567Z             {
2026-06-21T09:42:01.8005904Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8006154Z               "line": 1078
2026-06-21T09:42:01.8006389Z             },
2026-06-21T09:42:01.8006621Z             {
2026-06-21T09:42:01.8006956Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8007202Z               "line": 1092
2026-06-21T09:42:01.8007437Z             }
2026-06-21T09:42:01.8007676Z           ]
2026-06-21T09:42:01.8007910Z         }
2026-06-21T09:42:01.8008143Z       }
2026-06-21T09:42:01.8008362Z     },
2026-06-21T09:42:01.8008599Z     {
2026-06-21T09:42:01.8008869Z       "id": "REQ-PICKER-UX-V013",
2026-06-21T09:42:01.8013601Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-21T09:42:01.8013890Z       "requiredStages": [],
2026-06-21T09:42:01.8014125Z       "stages": {
2026-06-21T09:42:01.8014368Z         "doc": {
2026-06-21T09:42:01.8014639Z           "complete": false,
2026-06-21T09:42:01.8014891Z           "evidence": []
2026-06-21T09:42:01.8015120Z         },
2026-06-21T09:42:01.8015359Z         "impl": {
2026-06-21T09:42:01.8015618Z           "complete": false,
2026-06-21T09:42:01.8015864Z           "evidence": []
2026-06-21T09:42:01.8016102Z         },
2026-06-21T09:42:01.8016351Z         "int": {
2026-06-21T09:42:01.8016607Z           "complete": false,
2026-06-21T09:42:01.8016857Z           "evidence": []
2026-06-21T09:42:01.8017086Z         },
2026-06-21T09:42:01.8017340Z         "unit": {
2026-06-21T09:42:01.8017597Z           "complete": false,
2026-06-21T09:42:01.8017845Z           "evidence": []
2026-06-21T09:42:01.8018087Z         }
2026-06-21T09:42:01.8018316Z       }
2026-06-21T09:42:01.8018546Z     },
2026-06-21T09:42:01.8018780Z     {
2026-06-21T09:42:01.8019116Z       "id": "REQ-PRES-1",
2026-06-21T09:42:01.8023010Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-21T09:42:01.8023404Z       "requiredStages": [
2026-06-21T09:42:01.8023644Z         "impl",
2026-06-21T09:42:01.8023974Z         "unit",
2026-06-21T09:42:01.8024209Z         "int"
2026-06-21T09:42:01.8024441Z       ],
2026-06-21T09:42:01.8024690Z       "stages": {
2026-06-21T09:42:01.8024933Z         "doc": {
2026-06-21T09:42:01.8025180Z           "complete": true,
2026-06-21T09:42:01.8025432Z           "evidence": [
2026-06-21T09:42:01.8025652Z             {
2026-06-21T09:42:01.8025943Z               "path": "docs/DEFERRED.md",
2026-06-21T09:42:01.8026192Z               "line": 11
2026-06-21T09:42:01.8026429Z             }
2026-06-21T09:42:01.8026663Z           ]
2026-06-21T09:42:01.8026892Z         },
2026-06-21T09:42:01.8027134Z         "impl": {
2026-06-21T09:42:01.8027388Z           "complete": true,
2026-06-21T09:42:01.8027646Z           "evidence": [
2026-06-21T09:42:01.8027876Z             {
2026-06-21T09:42:01.8028229Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.8028486Z               "line": 515
2026-06-21T09:42:01.8028725Z             },
2026-06-21T09:42:01.8029035Z             {
2026-06-21T09:42:01.8029379Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.8029633Z               "line": 567
2026-06-21T09:42:01.8029861Z             },
2026-06-21T09:42:01.8030100Z             {
2026-06-21T09:42:01.8030424Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.8030667Z               "line": 188
2026-06-21T09:42:01.8030914Z             },
2026-06-21T09:42:01.8031143Z             {
2026-06-21T09:42:01.8031477Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.8031725Z               "line": 214
2026-06-21T09:42:01.8031964Z             },
2026-06-21T09:42:01.8032193Z             {
2026-06-21T09:42:01.8032539Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:42:01.8032786Z               "line": 28
2026-06-21T09:42:01.8033026Z             },
2026-06-21T09:42:01.8033274Z             {
2026-06-21T09:42:01.8033617Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:42:01.8033866Z               "line": 105
2026-06-21T09:42:01.8034103Z             },
2026-06-21T09:42:01.8034336Z             {
2026-06-21T09:42:01.8034689Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:42:01.8034931Z               "line": 161
2026-06-21T09:42:01.8035163Z             },
2026-06-21T09:42:01.8035391Z             {
2026-06-21T09:42:01.8035735Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:42:01.8035992Z               "line": 180
2026-06-21T09:42:01.8036222Z             },
2026-06-21T09:42:01.8036461Z             {
2026-06-21T09:42:01.8036823Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.8037077Z               "line": 421
2026-06-21T09:42:01.8037309Z             },
2026-06-21T09:42:01.8037537Z             {
2026-06-21T09:42:01.8037896Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8038150Z               "line": 289
2026-06-21T09:42:01.8038393Z             },
2026-06-21T09:42:01.8038631Z             {
2026-06-21T09:42:01.8039037Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8039285Z               "line": 336
2026-06-21T09:42:01.8039518Z             },
2026-06-21T09:42:01.8039746Z             {
2026-06-21T09:42:01.8040099Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8040355Z               "line": 362
2026-06-21T09:42:01.8040588Z             },
2026-06-21T09:42:01.8040825Z             {
2026-06-21T09:42:01.8041174Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.8041422Z               "line": 100
2026-06-21T09:42:01.8041665Z             }
2026-06-21T09:42:01.8041899Z           ]
2026-06-21T09:42:01.8042142Z         },
2026-06-21T09:42:01.8042375Z         "int": {
2026-06-21T09:42:01.8042637Z           "complete": true,
2026-06-21T09:42:01.8042886Z           "evidence": [
2026-06-21T09:42:01.8043219Z             {
2026-06-21T09:42:01.8043591Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:42:01.8043929Z               "line": 563
2026-06-21T09:42:01.8044168Z             },
2026-06-21T09:42:01.8044402Z             {
2026-06-21T09:42:01.8044745Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.8044993Z               "line": 747
2026-06-21T09:42:01.8045220Z             },
2026-06-21T09:42:01.8045453Z             {
2026-06-21T09:42:01.8045796Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.8046053Z               "line": 1165
2026-06-21T09:42:01.8046290Z             }
2026-06-21T09:42:01.8046533Z           ]
2026-06-21T09:42:01.8046758Z         },
2026-06-21T09:42:01.8046992Z         "unit": {
2026-06-21T09:42:01.8047244Z           "complete": true,
2026-06-21T09:42:01.8047483Z           "evidence": [
2026-06-21T09:42:01.8047721Z             {
2026-06-21T09:42:01.8051873Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.8052159Z               "line": 674
2026-06-21T09:42:01.8052407Z             },
2026-06-21T09:42:01.8052640Z             {
2026-06-21T09:42:01.8053013Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:42:01.8053250Z               "line": 238
2026-06-21T09:42:01.8053493Z             },
2026-06-21T09:42:01.8053717Z             {
2026-06-21T09:42:01.8054065Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:42:01.8054313Z               "line": 269
2026-06-21T09:42:01.8054546Z             },
2026-06-21T09:42:01.8054780Z             {
2026-06-21T09:42:01.8055133Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:42:01.8055391Z               "line": 305
2026-06-21T09:42:01.8055625Z             },
2026-06-21T09:42:01.8055857Z             {
2026-06-21T09:42:01.8056216Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:42:01.8056459Z               "line": 336
2026-06-21T09:42:01.8056703Z             },
2026-06-21T09:42:01.8056933Z             {
2026-06-21T09:42:01.8057304Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.8057557Z               "line": 1217
2026-06-21T09:42:01.8057795Z             },
2026-06-21T09:42:01.8058029Z             {
2026-06-21T09:42:01.8058381Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.8058634Z               "line": 1163
2026-06-21T09:42:01.8058871Z             }
2026-06-21T09:42:01.8059185Z           ]
2026-06-21T09:42:01.8059412Z         }
2026-06-21T09:42:01.8059650Z       }
2026-06-21T09:42:01.8059880Z     },
2026-06-21T09:42:01.8060114Z     {
2026-06-21T09:42:01.8060371Z       "id": "REQ-RC-1",
2026-06-21T09:42:01.8066455Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-21T09:42:01.8066748Z       "requiredStages": [
2026-06-21T09:42:01.8066992Z         "impl",
2026-06-21T09:42:01.8067230Z         "unit",
2026-06-21T09:42:01.8067474Z         "int"
2026-06-21T09:42:01.8067706Z       ],
2026-06-21T09:42:01.8067945Z       "stages": {
2026-06-21T09:42:01.8068188Z         "doc": {
2026-06-21T09:42:01.8068437Z           "complete": false,
2026-06-21T09:42:01.8068689Z           "evidence": []
2026-06-21T09:42:01.8068913Z         },
2026-06-21T09:42:01.8069227Z         "impl": {
2026-06-21T09:42:01.8069487Z           "complete": true,
2026-06-21T09:42:01.8069891Z           "evidence": [
2026-06-21T09:42:01.8070136Z             {
2026-06-21T09:42:01.8070559Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.8070808Z               "line": 944
2026-06-21T09:42:01.8071037Z             },
2026-06-21T09:42:01.8071276Z             {
2026-06-21T09:42:01.8071610Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.8071869Z               "line": 2100
2026-06-21T09:42:01.8072105Z             },
2026-06-21T09:42:01.8072330Z             {
2026-06-21T09:42:01.8072673Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.8072912Z               "line": 1017
2026-06-21T09:42:01.8073150Z             },
2026-06-21T09:42:01.8073384Z             {
2026-06-21T09:42:01.8073726Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.8073979Z               "line": 1051
2026-06-21T09:42:01.8074215Z             },
2026-06-21T09:42:01.8074448Z             {
2026-06-21T09:42:01.8074750Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8074999Z               "line": 22
2026-06-21T09:42:01.8075233Z             },
2026-06-21T09:42:01.8075467Z             {
2026-06-21T09:42:01.8075762Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8076005Z               "line": 701
2026-06-21T09:42:01.8076244Z             }
2026-06-21T09:42:01.8076482Z           ]
2026-06-21T09:42:01.8076716Z         },
2026-06-21T09:42:01.8076962Z         "int": {
2026-06-21T09:42:01.8077213Z           "complete": true,
2026-06-21T09:42:01.8077462Z           "evidence": [
2026-06-21T09:42:01.8077695Z             {
2026-06-21T09:42:01.8078043Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.8078296Z               "line": 258
2026-06-21T09:42:01.8078543Z             },
2026-06-21T09:42:01.8078772Z             {
2026-06-21T09:42:01.8079197Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.8079449Z               "line": 285
2026-06-21T09:42:01.8079693Z             },
2026-06-21T09:42:01.8079930Z             {
2026-06-21T09:42:01.8080271Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.8080519Z               "line": 413
2026-06-21T09:42:01.8080757Z             }
2026-06-21T09:42:01.8080982Z           ]
2026-06-21T09:42:01.8081216Z         },
2026-06-21T09:42:01.8081448Z         "unit": {
2026-06-21T09:42:01.8081711Z           "complete": true,
2026-06-21T09:42:01.8081950Z           "evidence": [
2026-06-21T09:42:01.8082184Z             {
2026-06-21T09:42:01.8082520Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.8082765Z               "line": 1415
2026-06-21T09:42:01.8082999Z             },
2026-06-21T09:42:01.8083224Z             {
2026-06-21T09:42:01.8083525Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8083768Z               "line": 1133
2026-06-21T09:42:01.8084005Z             },
2026-06-21T09:42:01.8084240Z             {
2026-06-21T09:42:01.8084535Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8084784Z               "line": 1162
2026-06-21T09:42:01.8085018Z             },
2026-06-21T09:42:01.8085244Z             {
2026-06-21T09:42:01.8085535Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8085788Z               "line": 1175
2026-06-21T09:42:01.8086023Z             }
2026-06-21T09:42:01.8086255Z           ]
2026-06-21T09:42:01.8086485Z         }
2026-06-21T09:42:01.8086709Z       }
2026-06-21T09:42:01.8086948Z     },
2026-06-21T09:42:01.8087166Z     {
2026-06-21T09:42:01.8087461Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-21T09:42:01.8104326Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-21T09:42:01.8104869Z       "requiredStages": [
2026-06-21T09:42:01.8105107Z         "doc",
2026-06-21T09:42:01.8105345Z         "impl",
2026-06-21T09:42:01.8105585Z         "unit"
2026-06-21T09:42:01.8105818Z       ],
2026-06-21T09:42:01.8106056Z       "stages": {
2026-06-21T09:42:01.8106299Z         "doc": {
2026-06-21T09:42:01.8106552Z           "complete": true,
2026-06-21T09:42:01.8106804Z           "evidence": [
2026-06-21T09:42:01.8107046Z             {
2026-06-21T09:42:01.8107314Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.8107552Z               "line": 345
2026-06-21T09:42:01.8107796Z             },
2026-06-21T09:42:01.8108034Z             {
2026-06-21T09:42:01.8108339Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.8108576Z               "line": 440
2026-06-21T09:42:01.8108814Z             }
2026-06-21T09:42:01.8109099Z           ]
2026-06-21T09:42:01.8109332Z         },
2026-06-21T09:42:01.8109570Z         "impl": {
2026-06-21T09:42:01.8109833Z           "complete": true,
2026-06-21T09:42:01.8110086Z           "evidence": [
2026-06-21T09:42:01.8110320Z             {
2026-06-21T09:42:01.8110615Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8110848Z               "line": 226
2026-06-21T09:42:01.8111087Z             },
2026-06-21T09:42:01.8111322Z             {
2026-06-21T09:42:01.8111615Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8111869Z               "line": 285
2026-06-21T09:42:01.8112099Z             },
2026-06-21T09:42:01.8112333Z             {
2026-06-21T09:42:01.8112620Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8112877Z               "line": 300
2026-06-21T09:42:01.8113110Z             },
2026-06-21T09:42:01.8113353Z             {
2026-06-21T09:42:01.8113634Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8113874Z               "line": 315
2026-06-21T09:42:01.8114110Z             },
2026-06-21T09:42:01.8114337Z             {
2026-06-21T09:42:01.8114633Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8114867Z               "line": 364
2026-06-21T09:42:01.8115105Z             }
2026-06-21T09:42:01.8115347Z           ]
2026-06-21T09:42:01.8115577Z         },
2026-06-21T09:42:01.8115811Z         "int": {
2026-06-21T09:42:01.8116078Z           "complete": false,
2026-06-21T09:42:01.8116334Z           "evidence": []
2026-06-21T09:42:01.8116573Z         },
2026-06-21T09:42:01.8116817Z         "unit": {
2026-06-21T09:42:01.8117192Z           "complete": true,
2026-06-21T09:42:01.8117436Z           "evidence": [
2026-06-21T09:42:01.8117769Z             {
2026-06-21T09:42:01.8118060Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8118318Z               "line": 1190
2026-06-21T09:42:01.8118546Z             },
2026-06-21T09:42:01.8118784Z             {
2026-06-21T09:42:01.8119141Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8119388Z               "line": 1305
2026-06-21T09:42:01.8119630Z             }
2026-06-21T09:42:01.8119858Z           ]
2026-06-21T09:42:01.8120093Z         }
2026-06-21T09:42:01.8120322Z       }
2026-06-21T09:42:01.8120551Z     },
2026-06-21T09:42:01.8120774Z     {
2026-06-21T09:42:01.8121047Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-21T09:42:01.8133740Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-21T09:42:01.8134055Z       "requiredStages": [
2026-06-21T09:42:01.8134292Z         "doc",
2026-06-21T09:42:01.8134530Z         "impl",
2026-06-21T09:42:01.8134774Z         "unit"
2026-06-21T09:42:01.8135009Z       ],
2026-06-21T09:42:01.8135254Z       "stages": {
2026-06-21T09:42:01.8135481Z         "doc": {
2026-06-21T09:42:01.8135735Z           "complete": true,
2026-06-21T09:42:01.8135987Z           "evidence": [
2026-06-21T09:42:01.8136220Z             {
2026-06-21T09:42:01.8136525Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.8136777Z               "line": 461
2026-06-21T09:42:01.8137011Z             }
2026-06-21T09:42:01.8137246Z           ]
2026-06-21T09:42:01.8137489Z         },
2026-06-21T09:42:01.8137731Z         "impl": {
2026-06-21T09:42:01.8137988Z           "complete": true,
2026-06-21T09:42:01.8138232Z           "evidence": [
2026-06-21T09:42:01.8138455Z             {
2026-06-21T09:42:01.8138750Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8139080Z               "line": 421
2026-06-21T09:42:01.8139323Z             },
2026-06-21T09:42:01.8139566Z             {
2026-06-21T09:42:01.8139858Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8140112Z               "line": 437
2026-06-21T09:42:01.8140338Z             }
2026-06-21T09:42:01.8140579Z           ]
2026-06-21T09:42:01.8140808Z         },
2026-06-21T09:42:01.8141041Z         "int": {
2026-06-21T09:42:01.8141307Z           "complete": false,
2026-06-21T09:42:01.8141551Z           "evidence": []
2026-06-21T09:42:01.8141781Z         },
2026-06-21T09:42:01.8142010Z         "unit": {
2026-06-21T09:42:01.8142271Z           "complete": true,
2026-06-21T09:42:01.8142510Z           "evidence": [
2026-06-21T09:42:01.8142858Z             {
2026-06-21T09:42:01.8143148Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8143493Z               "line": 1440
2026-06-21T09:42:01.8143737Z             },
2026-06-21T09:42:01.8143966Z             {
2026-06-21T09:42:01.8144266Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8144509Z               "line": 1459
2026-06-21T09:42:01.8144748Z             },
2026-06-21T09:42:01.8144982Z             {
2026-06-21T09:42:01.8145273Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8145531Z               "line": 1471
2026-06-21T09:42:01.8145771Z             },
2026-06-21T09:42:01.8146017Z             {
2026-06-21T09:42:01.8146304Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8146557Z               "line": 1499
2026-06-21T09:42:01.8146795Z             }
2026-06-21T09:42:01.8147032Z           ]
2026-06-21T09:42:01.8147252Z         }
2026-06-21T09:42:01.8147487Z       }
2026-06-21T09:42:01.8147724Z     },
2026-06-21T09:42:01.8147953Z     {
2026-06-21T09:42:01.8148229Z       "id": "REQ-RC-WIN-PASTE",
2026-06-21T09:42:01.8161976Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-21T09:42:01.8162271Z       "requiredStages": [
2026-06-21T09:42:01.8162515Z         "doc",
2026-06-21T09:42:01.8162752Z         "impl",
2026-06-21T09:42:01.8162991Z         "unit"
2026-06-21T09:42:01.8163224Z       ],
2026-06-21T09:42:01.8163464Z       "stages": {
2026-06-21T09:42:01.8163711Z         "doc": {
2026-06-21T09:42:01.8163969Z           "complete": true,
2026-06-21T09:42:01.8164221Z           "evidence": [
2026-06-21T09:42:01.8164449Z             {
2026-06-21T09:42:01.8164762Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:42:01.8165000Z               "line": 447
2026-06-21T09:42:01.8165233Z             }
2026-06-21T09:42:01.8165463Z           ]
2026-06-21T09:42:01.8165687Z         },
2026-06-21T09:42:01.8165934Z         "impl": {
2026-06-21T09:42:01.8166192Z           "complete": true,
2026-06-21T09:42:01.8166449Z           "evidence": [
2026-06-21T09:42:01.8166684Z             {
2026-06-21T09:42:01.8166973Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8167223Z               "line": 395
2026-06-21T09:42:01.8167457Z             },
2026-06-21T09:42:01.8167701Z             {
2026-06-21T09:42:01.8167991Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8168230Z               "line": 411
2026-06-21T09:42:01.8168588Z             },
2026-06-21T09:42:01.8168821Z             {
2026-06-21T09:42:01.8169189Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8169570Z               "line": 454
2026-06-21T09:42:01.8169801Z             },
2026-06-21T09:42:01.8170035Z             {
2026-06-21T09:42:01.8170341Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8170589Z               "line": 468
2026-06-21T09:42:01.8170818Z             },
2026-06-21T09:42:01.8171051Z             {
2026-06-21T09:42:01.8171342Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8171594Z               "line": 479
2026-06-21T09:42:01.8171820Z             }
2026-06-21T09:42:01.8172051Z           ]
2026-06-21T09:42:01.8172288Z         },
2026-06-21T09:42:01.8172523Z         "int": {
2026-06-21T09:42:01.8172780Z           "complete": false,
2026-06-21T09:42:01.8173022Z           "evidence": []
2026-06-21T09:42:01.8173250Z         },
2026-06-21T09:42:01.8173489Z         "unit": {
2026-06-21T09:42:01.8173757Z           "complete": true,
2026-06-21T09:42:01.8174010Z           "evidence": [
2026-06-21T09:42:01.8174242Z             {
2026-06-21T09:42:01.8174538Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8174785Z               "line": 1381
2026-06-21T09:42:01.8175019Z             },
2026-06-21T09:42:01.8175240Z             {
2026-06-21T09:42:01.8175526Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8175779Z               "line": 1402
2026-06-21T09:42:01.8176008Z             },
2026-06-21T09:42:01.8176247Z             {
2026-06-21T09:42:01.8176523Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8176766Z               "line": 1423
2026-06-21T09:42:01.8177000Z             }
2026-06-21T09:42:01.8177235Z           ]
2026-06-21T09:42:01.8177475Z         }
2026-06-21T09:42:01.8177712Z       }
2026-06-21T09:42:01.8177942Z     },
2026-06-21T09:42:01.8178175Z     {
2026-06-21T09:42:01.8178432Z       "id": "REQ-RCVIEW-1",
2026-06-21T09:42:01.8191428Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-21T09:42:01.8191733Z       "requiredStages": [
2026-06-21T09:42:01.8191977Z         "doc",
2026-06-21T09:42:01.8192215Z         "impl",
2026-06-21T09:42:01.8192453Z         "unit",
2026-06-21T09:42:01.8192691Z         "int"
2026-06-21T09:42:01.8192931Z       ],
2026-06-21T09:42:01.8193181Z       "stages": {
2026-06-21T09:42:01.8193417Z         "doc": {
2026-06-21T09:42:01.8193675Z           "complete": true,
2026-06-21T09:42:01.8193914Z           "evidence": [
2026-06-21T09:42:01.8194152Z             {
2026-06-21T09:42:01.8194567Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.8194820Z               "line": 342
2026-06-21T09:42:01.8195057Z             }
2026-06-21T09:42:01.8195387Z           ]
2026-06-21T09:42:01.8195635Z         },
2026-06-21T09:42:01.8195869Z         "impl": {
2026-06-21T09:42:01.8196134Z           "complete": true,
2026-06-21T09:42:01.8196370Z           "evidence": [
2026-06-21T09:42:01.8196618Z             {
2026-06-21T09:42:01.8196966Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:42:01.8197210Z               "line": 375
2026-06-21T09:42:01.8197458Z             },
2026-06-21T09:42:01.8197687Z             {
2026-06-21T09:42:01.8198021Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.8198268Z               "line": 682
2026-06-21T09:42:01.8198501Z             },
2026-06-21T09:42:01.8198739Z             {
2026-06-21T09:42:01.8199152Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.8199415Z               "line": 693
2026-06-21T09:42:01.8199653Z             },
2026-06-21T09:42:01.8199886Z             {
2026-06-21T09:42:01.8200230Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:42:01.8200487Z               "line": 41
2026-06-21T09:42:01.8200725Z             },
2026-06-21T09:42:01.8200960Z             {
2026-06-21T09:42:01.8201284Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:42:01.8201525Z               "line": 62
2026-06-21T09:42:01.8201759Z             },
2026-06-21T09:42:01.8201984Z             {
2026-06-21T09:42:01.8202298Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.8202541Z               "line": 309
2026-06-21T09:42:01.8202775Z             },
2026-06-21T09:42:01.8203008Z             {
2026-06-21T09:42:01.8203299Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:42:01.8203538Z               "line": 701
2026-06-21T09:42:01.8203760Z             }
2026-06-21T09:42:01.8204001Z           ]
2026-06-21T09:42:01.8204235Z         },
2026-06-21T09:42:01.8204474Z         "int": {
2026-06-21T09:42:01.8204732Z           "complete": true,
2026-06-21T09:42:01.8204969Z           "evidence": [
2026-06-21T09:42:01.8205213Z             {
2026-06-21T09:42:01.8205556Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.8205809Z               "line": 913
2026-06-21T09:42:01.8206043Z             },
2026-06-21T09:42:01.8206277Z             {
2026-06-21T09:42:01.8206608Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.8206854Z               "line": 953
2026-06-21T09:42:01.8207094Z             },
2026-06-21T09:42:01.8207318Z             {
2026-06-21T09:42:01.8207661Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.8207918Z               "line": 1000
2026-06-21T09:42:01.8208146Z             },
2026-06-21T09:42:01.8208384Z             {
2026-06-21T09:42:01.8208723Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.8209061Z               "line": 1112
2026-06-21T09:42:01.8209308Z             }
2026-06-21T09:42:01.8209545Z           ]
2026-06-21T09:42:01.8209783Z         },
2026-06-21T09:42:01.8210026Z         "unit": {
2026-06-21T09:42:01.8210289Z           "complete": true,
2026-06-21T09:42:01.8210538Z           "evidence": [
2026-06-21T09:42:01.8210765Z             {
2026-06-21T09:42:01.8211095Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:42:01.8211347Z               "line": 175
2026-06-21T09:42:01.8211585Z             },
2026-06-21T09:42:01.8211811Z             {
2026-06-21T09:42:01.8212153Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:42:01.8212410Z               "line": 195
2026-06-21T09:42:01.8212653Z             }
2026-06-21T09:42:01.8212891Z           ]
2026-06-21T09:42:01.8213135Z         }
2026-06-21T09:42:01.8213369Z       }
2026-06-21T09:42:01.8213597Z     },
2026-06-21T09:42:01.8213835Z     {
2026-06-21T09:42:01.8214093Z       "id": "REQ-REACH-1",
2026-06-21T09:42:01.8214514Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-21T09:42:01.8214876Z       "requiredStages": [
2026-06-21T09:42:01.8215214Z         "impl",
2026-06-21T09:42:01.8215453Z         "unit",
2026-06-21T09:42:01.8215682Z         "int"
2026-06-21T09:42:01.8215921Z       ],
2026-06-21T09:42:01.8216163Z       "stages": {
2026-06-21T09:42:01.8216411Z         "doc": {
2026-06-21T09:42:01.8216674Z           "complete": false,
2026-06-21T09:42:01.8216928Z           "evidence": []
2026-06-21T09:42:01.8217169Z         },
2026-06-21T09:42:01.8217405Z         "impl": {
2026-06-21T09:42:01.8217668Z           "complete": true,
2026-06-21T09:42:01.8217911Z           "evidence": [
2026-06-21T09:42:01.8218149Z             {
2026-06-21T09:42:01.8218483Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.8218735Z               "line": 682
2026-06-21T09:42:01.8219055Z             },
2026-06-21T09:42:01.8219283Z             {
2026-06-21T09:42:01.8219612Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:42:01.8219864Z               "line": 76
2026-06-21T09:42:01.8220100Z             },
2026-06-21T09:42:01.8220334Z             {
2026-06-21T09:42:01.8220658Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:42:01.8220916Z               "line": 222
2026-06-21T09:42:01.8221145Z             },
2026-06-21T09:42:01.8221384Z             {
2026-06-21T09:42:01.8221708Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:42:01.8221965Z               "line": 422
2026-06-21T09:42:01.8222194Z             },
2026-06-21T09:42:01.8222428Z             {
2026-06-21T09:42:01.8222747Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:42:01.8222994Z               "line": 529
2026-06-21T09:42:01.8223232Z             },
2026-06-21T09:42:01.8223456Z             {
2026-06-21T09:42:01.8223776Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T09:42:01.8224019Z               "line": 39
2026-06-21T09:42:01.8224244Z             },
2026-06-21T09:42:01.8224486Z             {
2026-06-21T09:42:01.8224790Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.8225055Z               "line": 301
2026-06-21T09:42:01.8225289Z             },
2026-06-21T09:42:01.8225527Z             {
2026-06-21T09:42:01.8225857Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T09:42:01.8226094Z               "line": 88
2026-06-21T09:42:01.8226337Z             },
2026-06-21T09:42:01.8226562Z             {
2026-06-21T09:42:01.8226886Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T09:42:01.8227130Z               "line": 98
2026-06-21T09:42:01.8227358Z             },
2026-06-21T09:42:01.8227586Z             {
2026-06-21T09:42:01.8227922Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.8228176Z               "line": 233
2026-06-21T09:42:01.8228409Z             }
2026-06-21T09:42:01.8228637Z           ]
2026-06-21T09:42:01.8228876Z         },
2026-06-21T09:42:01.8229190Z         "int": {
2026-06-21T09:42:01.8229481Z           "complete": true,
2026-06-21T09:42:01.8229721Z           "evidence": [
2026-06-21T09:42:01.8229964Z             {
2026-06-21T09:42:01.8230315Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:42:01.8230560Z               "line": 415
2026-06-21T09:42:01.8230799Z             },
2026-06-21T09:42:01.8231038Z             {
2026-06-21T09:42:01.8231404Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:42:01.8231658Z               "line": 520
2026-06-21T09:42:01.8231895Z             },
2026-06-21T09:42:01.8232120Z             {
2026-06-21T09:42:01.8232472Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.8232706Z               "line": 998
2026-06-21T09:42:01.8232946Z             },
2026-06-21T09:42:01.8233187Z             {
2026-06-21T09:42:01.8233521Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.8233778Z               "line": 1383
2026-06-21T09:42:01.8234012Z             }
2026-06-21T09:42:01.8234364Z           ]
2026-06-21T09:42:01.8234598Z         },
2026-06-21T09:42:01.8234828Z         "unit": {
2026-06-21T09:42:01.8235181Z           "complete": true,
2026-06-21T09:42:01.8235422Z           "evidence": [
2026-06-21T09:42:01.8235653Z             {
2026-06-21T09:42:01.8235982Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:42:01.8236240Z               "line": 639
2026-06-21T09:42:01.8236474Z             },
2026-06-21T09:42:01.8236708Z             {
2026-06-21T09:42:01.8237032Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:42:01.8237279Z               "line": 660
2026-06-21T09:42:01.8237512Z             },
2026-06-21T09:42:01.8237738Z             {
2026-06-21T09:42:01.8238072Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:42:01.8238317Z               "line": 768
2026-06-21T09:42:01.8238558Z             },
2026-06-21T09:42:01.8238788Z             {
2026-06-21T09:42:01.8239197Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T09:42:01.8239464Z               "line": 93
2026-06-21T09:42:01.8239698Z             },
2026-06-21T09:42:01.8239933Z             {
2026-06-21T09:42:01.8240267Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T09:42:01.8240524Z               "line": 224
2026-06-21T09:42:01.8240756Z             },
2026-06-21T09:42:01.8240988Z             {
2026-06-21T09:42:01.8241307Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T09:42:01.8241550Z               "line": 96
2026-06-21T09:42:01.8241783Z             },
2026-06-21T09:42:01.8242017Z             {
2026-06-21T09:42:01.8242337Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T09:42:01.8242590Z               "line": 146
2026-06-21T09:42:01.8242819Z             },
2026-06-21T09:42:01.8243051Z             {
2026-06-21T09:42:01.8243361Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.8243614Z               "line": 698
2026-06-21T09:42:01.8243857Z             },
2026-06-21T09:42:01.8244091Z             {
2026-06-21T09:42:01.8244401Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T09:42:01.8244652Z               "line": 118
2026-06-21T09:42:01.8244887Z             },
2026-06-21T09:42:01.8245121Z             {
2026-06-21T09:42:01.8245440Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T09:42:01.8245693Z               "line": 148
2026-06-21T09:42:01.8245925Z             },
2026-06-21T09:42:01.8246161Z             {
2026-06-21T09:42:01.8246504Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.8246752Z               "line": 928
2026-06-21T09:42:01.8246982Z             }
2026-06-21T09:42:01.8247219Z           ]
2026-06-21T09:42:01.8247458Z         }
2026-06-21T09:42:01.8247687Z       }
2026-06-21T09:42:01.8247926Z     },
2026-06-21T09:42:01.8248149Z     {
2026-06-21T09:42:01.8248406Z       "id": "REQ-REACH-2",
2026-06-21T09:42:01.8248839Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-21T09:42:01.8249190Z       "requiredStages": [],
2026-06-21T09:42:01.8249443Z       "stages": {
2026-06-21T09:42:01.8249686Z         "doc": {
2026-06-21T09:42:01.8249944Z           "complete": false,
2026-06-21T09:42:01.8250188Z           "evidence": []
2026-06-21T09:42:01.8250425Z         },
2026-06-21T09:42:01.8250659Z         "impl": {
2026-06-21T09:42:01.8250926Z           "complete": false,
2026-06-21T09:42:01.8251180Z           "evidence": []
2026-06-21T09:42:01.8251416Z         },
2026-06-21T09:42:01.8251657Z         "int": {
2026-06-21T09:42:01.8251910Z           "complete": false,
2026-06-21T09:42:01.8252173Z           "evidence": []
2026-06-21T09:42:01.8252396Z         },
2026-06-21T09:42:01.8252648Z         "unit": {
2026-06-21T09:42:01.8252911Z           "complete": false,
2026-06-21T09:42:01.8253159Z           "evidence": []
2026-06-21T09:42:01.8253398Z         }
2026-06-21T09:42:01.8253631Z       }
2026-06-21T09:42:01.8253869Z     },
2026-06-21T09:42:01.8254099Z     {
2026-06-21T09:42:01.8254503Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-21T09:42:01.8264429Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-21T09:42:01.8264838Z       "requiredStages": [
2026-06-21T09:42:01.8265082Z         "doc",
2026-06-21T09:42:01.8265321Z         "impl",
2026-06-21T09:42:01.8265559Z         "unit",
2026-06-21T09:42:01.8265797Z         "int"
2026-06-21T09:42:01.8266031Z       ],
2026-06-21T09:42:01.8266265Z       "stages": {
2026-06-21T09:42:01.8266504Z         "doc": {
2026-06-21T09:42:01.8266760Z           "complete": true,
2026-06-21T09:42:01.8267012Z           "evidence": [
2026-06-21T09:42:01.8267249Z             {
2026-06-21T09:42:01.8267516Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.8267768Z               "line": 372
2026-06-21T09:42:01.8267982Z             }
2026-06-21T09:42:01.8268221Z           ]
2026-06-21T09:42:01.8268445Z         },
2026-06-21T09:42:01.8268693Z         "impl": {
2026-06-21T09:42:01.8269027Z           "complete": true,
2026-06-21T09:42:01.8269283Z           "evidence": [
2026-06-21T09:42:01.8269551Z             {
2026-06-21T09:42:01.8269864Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:42:01.8270121Z               "line": 110
2026-06-21T09:42:01.8270353Z             }
2026-06-21T09:42:01.8270592Z           ]
2026-06-21T09:42:01.8270821Z         },
2026-06-21T09:42:01.8271059Z         "int": {
2026-06-21T09:42:01.8271313Z           "complete": true,
2026-06-21T09:42:01.8271555Z           "evidence": [
2026-06-21T09:42:01.8271798Z             {
2026-06-21T09:42:01.8272190Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-21T09:42:01.8272441Z               "line": 26
2026-06-21T09:42:01.8272669Z             }
2026-06-21T09:42:01.8272887Z           ]
2026-06-21T09:42:01.8273125Z         },
2026-06-21T09:42:01.8273359Z         "unit": {
2026-06-21T09:42:01.8273616Z           "complete": true,
2026-06-21T09:42:01.8273870Z           "evidence": [
2026-06-21T09:42:01.8274093Z             {
2026-06-21T09:42:01.8274408Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:42:01.8274651Z               "line": 320
2026-06-21T09:42:01.8274885Z             }
2026-06-21T09:42:01.8275119Z           ]
2026-06-21T09:42:01.8275355Z         }
2026-06-21T09:42:01.8275585Z       }
2026-06-21T09:42:01.8275819Z     },
2026-06-21T09:42:01.8276052Z     {
2026-06-21T09:42:01.8276300Z       "id": "REQ-REL-1",
2026-06-21T09:42:01.8277496Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-21T09:42:01.8277762Z       "requiredStages": [
2026-06-21T09:42:01.8278004Z         "doc",
2026-06-21T09:42:01.8278241Z         "impl"
2026-06-21T09:42:01.8278480Z       ],
2026-06-21T09:42:01.8278729Z       "stages": {
2026-06-21T09:42:01.8279034Z         "doc": {
2026-06-21T09:42:01.8279297Z           "complete": true,
2026-06-21T09:42:01.8279701Z           "evidence": [
2026-06-21T09:42:01.8279941Z             {
2026-06-21T09:42:01.8280582Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-21T09:42:01.8280918Z               "line": 3
2026-06-21T09:42:01.8281157Z             }
2026-06-21T09:42:01.8281381Z           ]
2026-06-21T09:42:01.8281610Z         },
2026-06-21T09:42:01.8281849Z         "impl": {
2026-06-21T09:42:01.8282106Z           "complete": true,
2026-06-21T09:42:01.8282359Z           "evidence": [
2026-06-21T09:42:01.8282593Z             {
2026-06-21T09:42:01.8282954Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T09:42:01.8283197Z               "line": 11
2026-06-21T09:42:01.8283433Z             },
2026-06-21T09:42:01.8283661Z             {
2026-06-21T09:42:01.8283966Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.8284215Z               "line": 265
2026-06-21T09:42:01.8284444Z             }
2026-06-21T09:42:01.8284691Z           ]
2026-06-21T09:42:01.8284915Z         },
2026-06-21T09:42:01.8285163Z         "int": {
2026-06-21T09:42:01.8285427Z           "complete": false,
2026-06-21T09:42:01.8285684Z           "evidence": []
2026-06-21T09:42:01.8285930Z         },
2026-06-21T09:42:01.8286164Z         "unit": {
2026-06-21T09:42:01.8286417Z           "complete": false,
2026-06-21T09:42:01.8286666Z           "evidence": []
2026-06-21T09:42:01.8286893Z         }
2026-06-21T09:42:01.8287127Z       }
2026-06-21T09:42:01.8287371Z     },
2026-06-21T09:42:01.8287600Z     {
2026-06-21T09:42:01.8287852Z       "id": "REQ-REL-2",
2026-06-21T09:42:01.8289427Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-21T09:42:01.8289689Z       "requiredStages": [
2026-06-21T09:42:01.8289932Z         "impl",
2026-06-21T09:42:01.8290157Z         "int"
2026-06-21T09:42:01.8290390Z       ],
2026-06-21T09:42:01.8290642Z       "stages": {
2026-06-21T09:42:01.8290877Z         "doc": {
2026-06-21T09:42:01.8291128Z           "complete": true,
2026-06-21T09:42:01.8291383Z           "evidence": [
2026-06-21T09:42:01.8291622Z             {
2026-06-21T09:42:01.8291922Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-21T09:42:01.8296006Z               "line": 6
2026-06-21T09:42:01.8296292Z             }
2026-06-21T09:42:01.8296523Z           ]
2026-06-21T09:42:01.8296762Z         },
2026-06-21T09:42:01.8297016Z         "impl": {
2026-06-21T09:42:01.8297273Z           "complete": true,
2026-06-21T09:42:01.8297521Z           "evidence": [
2026-06-21T09:42:01.8297768Z             {
2026-06-21T09:42:01.8298111Z               "path": ".github/workflows/release.yml",
2026-06-21T09:42:01.8298355Z               "line": 16
2026-06-21T09:42:01.8298598Z             },
2026-06-21T09:42:01.8298831Z             {
2026-06-21T09:42:01.8299249Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.8299530Z               "line": 352
2026-06-21T09:42:01.8299768Z             },
2026-06-21T09:42:01.8299991Z             {
2026-06-21T09:42:01.8300287Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.8300535Z               "line": 426
2026-06-21T09:42:01.8300761Z             },
2026-06-21T09:42:01.8301003Z             {
2026-06-21T09:42:01.8301303Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.8301545Z               "line": 588
2026-06-21T09:42:01.8301778Z             },
2026-06-21T09:42:01.8302010Z             {
2026-06-21T09:42:01.8302310Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.8302563Z               "line": 720
2026-06-21T09:42:01.8302797Z             }
2026-06-21T09:42:01.8303026Z           ]
2026-06-21T09:42:01.8303264Z         },
2026-06-21T09:42:01.8303503Z         "int": {
2026-06-21T09:42:01.8303760Z           "complete": true,
2026-06-21T09:42:01.8304009Z           "evidence": [
2026-06-21T09:42:01.8304240Z             {
2026-06-21T09:42:01.8304777Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-21T09:42:01.8305026Z               "line": 13
2026-06-21T09:42:01.8305364Z             }
2026-06-21T09:42:01.8305602Z           ]
2026-06-21T09:42:01.8305836Z         },
2026-06-21T09:42:01.8306074Z         "unit": {
2026-06-21T09:42:01.8306321Z           "complete": false,
2026-06-21T09:42:01.8306585Z           "evidence": []
2026-06-21T09:42:01.8306815Z         }
2026-06-21T09:42:01.8307045Z       }
2026-06-21T09:42:01.8307285Z     },
2026-06-21T09:42:01.8307514Z     {
2026-06-21T09:42:01.8307766Z       "id": "REQ-REL-3",
2026-06-21T09:42:01.8309191Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-21T09:42:01.8309462Z       "requiredStages": [
2026-06-21T09:42:01.8309693Z         "impl",
2026-06-21T09:42:01.8309932Z         "unit"
2026-06-21T09:42:01.8310161Z       ],
2026-06-21T09:42:01.8310409Z       "stages": {
2026-06-21T09:42:01.8310653Z         "doc": {
2026-06-21T09:42:01.8310909Z           "complete": false,
2026-06-21T09:42:01.8311171Z           "evidence": []
2026-06-21T09:42:01.8311400Z         },
2026-06-21T09:42:01.8311641Z         "impl": {
2026-06-21T09:42:01.8311903Z           "complete": true,
2026-06-21T09:42:01.8312143Z           "evidence": [
2026-06-21T09:42:01.8312389Z             {
2026-06-21T09:42:01.8312732Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.8312985Z               "line": 237
2026-06-21T09:42:01.8313220Z             },
2026-06-21T09:42:01.8313452Z             {
2026-06-21T09:42:01.8313800Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.8314043Z               "line": 289
2026-06-21T09:42:01.8314282Z             },
2026-06-21T09:42:01.8314517Z             {
2026-06-21T09:42:01.8314810Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.8315055Z               "line": 329
2026-06-21T09:42:01.8315309Z             },
2026-06-21T09:42:01.8315543Z             {
2026-06-21T09:42:01.8315843Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.8316092Z               "line": 353
2026-06-21T09:42:01.8316333Z             },
2026-06-21T09:42:01.8316563Z             {
2026-06-21T09:42:01.8316854Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.8317107Z               "line": 394
2026-06-21T09:42:01.8317341Z             }
2026-06-21T09:42:01.8317572Z           ]
2026-06-21T09:42:01.8317803Z         },
2026-06-21T09:42:01.8318030Z         "int": {
2026-06-21T09:42:01.8318292Z           "complete": false,
2026-06-21T09:42:01.8318535Z           "evidence": []
2026-06-21T09:42:01.8318765Z         },
2026-06-21T09:42:01.8319084Z         "unit": {
2026-06-21T09:42:01.8319343Z           "complete": true,
2026-06-21T09:42:01.8319595Z           "evidence": [
2026-06-21T09:42:01.8319822Z             {
2026-06-21T09:42:01.8320187Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.8320444Z               "line": 1045
2026-06-21T09:42:01.8320678Z             },
2026-06-21T09:42:01.8320917Z             {
2026-06-21T09:42:01.8321246Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.8321498Z               "line": 1104
2026-06-21T09:42:01.8321731Z             }
2026-06-21T09:42:01.8321965Z           ]
2026-06-21T09:42:01.8322205Z         }
2026-06-21T09:42:01.8322433Z       }
2026-06-21T09:42:01.8322670Z     },
2026-06-21T09:42:01.8322894Z     {
2026-06-21T09:42:01.8323159Z       "id": "REQ-RUN-PICKER",
2026-06-21T09:42:01.8336677Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-21T09:42:01.8337207Z       "requiredStages": [
2026-06-21T09:42:01.8337449Z         "doc",
2026-06-21T09:42:01.8337688Z         "impl",
2026-06-21T09:42:01.8337922Z         "unit"
2026-06-21T09:42:01.8338156Z       ],
2026-06-21T09:42:01.8338398Z       "stages": {
2026-06-21T09:42:01.8338631Z         "doc": {
2026-06-21T09:42:01.8338899Z           "complete": true,
2026-06-21T09:42:01.8339218Z           "evidence": [
2026-06-21T09:42:01.8339462Z             {
2026-06-21T09:42:01.8339728Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.8339975Z               "line": 349
2026-06-21T09:42:01.8340209Z             }
2026-06-21T09:42:01.8340434Z           ]
2026-06-21T09:42:01.8340662Z         },
2026-06-21T09:42:01.8340909Z         "impl": {
2026-06-21T09:42:01.8341161Z           "complete": true,
2026-06-21T09:42:01.8341403Z           "evidence": [
2026-06-21T09:42:01.8341631Z             {
2026-06-21T09:42:01.8341936Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8342189Z               "line": 958
2026-06-21T09:42:01.8342428Z             },
2026-06-21T09:42:01.8342667Z             {
2026-06-21T09:42:01.8342963Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8343209Z               "line": 968
2026-06-21T09:42:01.8343434Z             },
2026-06-21T09:42:01.8343674Z             {
2026-06-21T09:42:01.8344000Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:42:01.8344251Z               "line": 9
2026-06-21T09:42:01.8344484Z             },
2026-06-21T09:42:01.8344705Z             {
2026-06-21T09:42:01.8345038Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:42:01.8345277Z               "line": 67
2026-06-21T09:42:01.8345515Z             },
2026-06-21T09:42:01.8345752Z             {
2026-06-21T09:42:01.8346072Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T09:42:01.8346329Z               "line": 16
2026-06-21T09:42:01.8346553Z             },
2026-06-21T09:42:01.8346789Z             {
2026-06-21T09:42:01.8347108Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T09:42:01.8347361Z               "line": 254
2026-06-21T09:42:01.8347595Z             },
2026-06-21T09:42:01.8347820Z             {
2026-06-21T09:42:01.8348144Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8348387Z               "line": 11
2026-06-21T09:42:01.8348624Z             },
2026-06-21T09:42:01.8348862Z             {
2026-06-21T09:42:01.8349263Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8349506Z               "line": 115
2026-06-21T09:42:01.8349740Z             },
2026-06-21T09:42:01.8349973Z             {
2026-06-21T09:42:01.8350307Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8350559Z               "line": 554
2026-06-21T09:42:01.8350793Z             },
2026-06-21T09:42:01.8351150Z             {
2026-06-21T09:42:01.8351488Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8351848Z               "line": 635
2026-06-21T09:42:01.8352082Z             },
2026-06-21T09:42:01.8352316Z             {
2026-06-21T09:42:01.8352641Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8352889Z               "line": 694
2026-06-21T09:42:01.8353130Z             },
2026-06-21T09:42:01.8353365Z             {
2026-06-21T09:42:01.8353688Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8353937Z               "line": 747
2026-06-21T09:42:01.8354172Z             },
2026-06-21T09:42:01.8354417Z             {
2026-06-21T09:42:01.8354748Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8354997Z               "line": 785
2026-06-21T09:42:01.8355240Z             },
2026-06-21T09:42:01.8355465Z             {
2026-06-21T09:42:01.8355784Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:42:01.8356032Z               "line": 8
2026-06-21T09:42:01.8356270Z             }
2026-06-21T09:42:01.8356504Z           ]
2026-06-21T09:42:01.8356743Z         },
2026-06-21T09:42:01.8356984Z         "int": {
2026-06-21T09:42:01.8357244Z           "complete": false,
2026-06-21T09:42:01.8357493Z           "evidence": []
2026-06-21T09:42:01.8357717Z         },
2026-06-21T09:42:01.8357950Z         "unit": {
2026-06-21T09:42:01.8358197Z           "complete": true,
2026-06-21T09:42:01.8358441Z           "evidence": [
2026-06-21T09:42:01.8358671Z             {
2026-06-21T09:42:01.8359033Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8359286Z               "line": 7638
2026-06-21T09:42:01.8359528Z             },
2026-06-21T09:42:01.8359770Z             {
2026-06-21T09:42:01.8360048Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8360291Z               "line": 7649
2026-06-21T09:42:01.8360528Z             },
2026-06-21T09:42:01.8360752Z             {
2026-06-21T09:42:01.8361081Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8361320Z               "line": 879
2026-06-21T09:42:01.8361569Z             },
2026-06-21T09:42:01.8361787Z             {
2026-06-21T09:42:01.8362115Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8362356Z               "line": 928
2026-06-21T09:42:01.8362591Z             },
2026-06-21T09:42:01.8362824Z             {
2026-06-21T09:42:01.8363144Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8363400Z               "line": 979
2026-06-21T09:42:01.8363634Z             },
2026-06-21T09:42:01.8363853Z             {
2026-06-21T09:42:01.8364182Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8364422Z               "line": 996
2026-06-21T09:42:01.8364659Z             },
2026-06-21T09:42:01.8364888Z             {
2026-06-21T09:42:01.8365214Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8365472Z               "line": 1005
2026-06-21T09:42:01.8365706Z             },
2026-06-21T09:42:01.8365947Z             {
2026-06-21T09:42:01.8366282Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8366530Z               "line": 1016
2026-06-21T09:42:01.8366763Z             },
2026-06-21T09:42:01.8367002Z             {
2026-06-21T09:42:01.8367337Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8367587Z               "line": 1038
2026-06-21T09:42:01.8367827Z             },
2026-06-21T09:42:01.8368058Z             {
2026-06-21T09:42:01.8368387Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8368634Z               "line": 1057
2026-06-21T09:42:01.8368868Z             },
2026-06-21T09:42:01.8369172Z             {
2026-06-21T09:42:01.8369517Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8369769Z               "line": 1107
2026-06-21T09:42:01.8370006Z             },
2026-06-21T09:42:01.8370242Z             {
2026-06-21T09:42:01.8370683Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8370932Z               "line": 1136
2026-06-21T09:42:01.8371256Z             },
2026-06-21T09:42:01.8371485Z             {
2026-06-21T09:42:01.8371819Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8372062Z               "line": 1149
2026-06-21T09:42:01.8372304Z             },
2026-06-21T09:42:01.8372537Z             {
2026-06-21T09:42:01.8372873Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8373122Z               "line": 1215
2026-06-21T09:42:01.8373355Z             },
2026-06-21T09:42:01.8373593Z             {
2026-06-21T09:42:01.8373912Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8374161Z               "line": 1256
2026-06-21T09:42:01.8374395Z             },
2026-06-21T09:42:01.8374619Z             {
2026-06-21T09:42:01.8374944Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8375191Z               "line": 1272
2026-06-21T09:42:01.8375424Z             },
2026-06-21T09:42:01.8375657Z             {
2026-06-21T09:42:01.8375984Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:42:01.8376236Z               "line": 491
2026-06-21T09:42:01.8376474Z             },
2026-06-21T09:42:01.8376714Z             {
2026-06-21T09:42:01.8377028Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:42:01.8377281Z               "line": 506
2026-06-21T09:42:01.8377515Z             },
2026-06-21T09:42:01.8377762Z             {
2026-06-21T09:42:01.8378076Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:42:01.8378326Z               "line": 524
2026-06-21T09:42:01.8378570Z             },
2026-06-21T09:42:01.8378793Z             {
2026-06-21T09:42:01.8379209Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:42:01.8379448Z               "line": 546
2026-06-21T09:42:01.8379685Z             },
2026-06-21T09:42:01.8379914Z             {
2026-06-21T09:42:01.8380242Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:42:01.8380492Z               "line": 556
2026-06-21T09:42:01.8380721Z             },
2026-06-21T09:42:01.8380962Z             {
2026-06-21T09:42:01.8381281Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:42:01.8381530Z               "line": 582
2026-06-21T09:42:01.8381769Z             }
2026-06-21T09:42:01.8382002Z           ]
2026-06-21T09:42:01.8382239Z         }
2026-06-21T09:42:01.8382468Z       }
2026-06-21T09:42:01.8382704Z     },
2026-06-21T09:42:01.8382936Z     {
2026-06-21T09:42:01.8383202Z       "id": "REQ-RUN-SHORTCUT",
2026-06-21T09:42:01.8396539Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-21T09:42:01.8397042Z       "requiredStages": [
2026-06-21T09:42:01.8397270Z         "doc",
2026-06-21T09:42:01.8397510Z         "impl",
2026-06-21T09:42:01.8397753Z         "unit"
2026-06-21T09:42:01.8397972Z       ],
2026-06-21T09:42:01.8398205Z       "stages": {
2026-06-21T09:42:01.8398439Z         "doc": {
2026-06-21T09:42:01.8398702Z           "complete": true,
2026-06-21T09:42:01.8399022Z           "evidence": [
2026-06-21T09:42:01.8399253Z             {
2026-06-21T09:42:01.8399527Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.8399775Z               "line": 390
2026-06-21T09:42:01.8400010Z             }
2026-06-21T09:42:01.8400238Z           ]
2026-06-21T09:42:01.8400471Z         },
2026-06-21T09:42:01.8400715Z         "impl": {
2026-06-21T09:42:01.8400968Z           "complete": true,
2026-06-21T09:42:01.8401217Z           "evidence": [
2026-06-21T09:42:01.8401449Z             {
2026-06-21T09:42:01.8401803Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:42:01.8402049Z               "line": 39
2026-06-21T09:42:01.8402288Z             },
2026-06-21T09:42:01.8402517Z             {
2026-06-21T09:42:01.8402860Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:42:01.8403117Z               "line": 79
2026-06-21T09:42:01.8403350Z             },
2026-06-21T09:42:01.8403594Z             {
2026-06-21T09:42:01.8403932Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:42:01.8404176Z               "line": 162
2026-06-21T09:42:01.8404408Z             }
2026-06-21T09:42:01.8404635Z           ]
2026-06-21T09:42:01.8404869Z         },
2026-06-21T09:42:01.8405098Z         "int": {
2026-06-21T09:42:01.8405360Z           "complete": false,
2026-06-21T09:42:01.8405612Z           "evidence": []
2026-06-21T09:42:01.8405851Z         },
2026-06-21T09:42:01.8406085Z         "unit": {
2026-06-21T09:42:01.8406347Z           "complete": true,
2026-06-21T09:42:01.8406600Z           "evidence": [
2026-06-21T09:42:01.8406828Z             {
2026-06-21T09:42:01.8407170Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:42:01.8407417Z               "line": 206
2026-06-21T09:42:01.8407655Z             },
2026-06-21T09:42:01.8407878Z             {
2026-06-21T09:42:01.8408217Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:42:01.8408474Z               "line": 222
2026-06-21T09:42:01.8408708Z             },
2026-06-21T09:42:01.8409037Z             {
2026-06-21T09:42:01.8409375Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:42:01.8409624Z               "line": 238
2026-06-21T09:42:01.8409856Z             },
2026-06-21T09:42:01.8410092Z             {
2026-06-21T09:42:01.8410440Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:42:01.8410688Z               "line": 251
2026-06-21T09:42:01.8410922Z             },
2026-06-21T09:42:01.8411162Z             {
2026-06-21T09:42:01.8411509Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:42:01.8411753Z               "line": 258
2026-06-21T09:42:01.8411990Z             }
2026-06-21T09:42:01.8412223Z           ]
2026-06-21T09:42:01.8412454Z         }
2026-06-21T09:42:01.8412685Z       }
2026-06-21T09:42:01.8412905Z     },
2026-06-21T09:42:01.8413139Z     {
2026-06-21T09:42:01.8413411Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-21T09:42:01.8413939Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-21T09:42:01.8414197Z       "requiredStages": [
2026-06-21T09:42:01.8414431Z         "impl",
2026-06-21T09:42:01.8414671Z         "unit"
2026-06-21T09:42:01.8414902Z       ],
2026-06-21T09:42:01.8415133Z       "stages": {
2026-06-21T09:42:01.8415368Z         "doc": {
2026-06-21T09:42:01.8415734Z           "complete": false,
2026-06-21T09:42:01.8415992Z           "evidence": []
2026-06-21T09:42:01.8416225Z         },
2026-06-21T09:42:01.8416569Z         "impl": {
2026-06-21T09:42:01.8416825Z           "complete": true,
2026-06-21T09:42:01.8417069Z           "evidence": [
2026-06-21T09:42:01.8417303Z             {
2026-06-21T09:42:01.8417632Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.8417892Z               "line": 18
2026-06-21T09:42:01.8418119Z             },
2026-06-21T09:42:01.8418353Z             {
2026-06-21T09:42:01.8418682Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.8418930Z               "line": 35
2026-06-21T09:42:01.8419254Z             },
2026-06-21T09:42:01.8419484Z             {
2026-06-21T09:42:01.8419818Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.8420056Z               "line": 72
2026-06-21T09:42:01.8420293Z             }
2026-06-21T09:42:01.8420525Z           ]
2026-06-21T09:42:01.8420767Z         },
2026-06-21T09:42:01.8421005Z         "int": {
2026-06-21T09:42:01.8421272Z           "complete": false,
2026-06-21T09:42:01.8421526Z           "evidence": []
2026-06-21T09:42:01.8421755Z         },
2026-06-21T09:42:01.8421998Z         "unit": {
2026-06-21T09:42:01.8422255Z           "complete": true,
2026-06-21T09:42:01.8422522Z           "evidence": [
2026-06-21T09:42:01.8422755Z             {
2026-06-21T09:42:01.8423098Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.8423337Z               "line": 239
2026-06-21T09:42:01.8423560Z             },
2026-06-21T09:42:01.8423798Z             {
2026-06-21T09:42:01.8424122Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.8424371Z               "line": 256
2026-06-21T09:42:01.8424601Z             },
2026-06-21T09:42:01.8424833Z             {
2026-06-21T09:42:01.8425172Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.8425414Z               "line": 265
2026-06-21T09:42:01.8425660Z             }
2026-06-21T09:42:01.8425893Z           ]
2026-06-21T09:42:01.8426137Z         }
2026-06-21T09:42:01.8426375Z       }
2026-06-21T09:42:01.8426609Z     },
2026-06-21T09:42:01.8426834Z     {
2026-06-21T09:42:01.8427114Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-21T09:42:01.8427539Z       "title": "Hostable endpoint-types capability declaration",
2026-06-21T09:42:01.8427802Z       "requiredStages": [
2026-06-21T09:42:01.8428040Z         "impl",
2026-06-21T09:42:01.8428272Z         "unit"
2026-06-21T09:42:01.8428504Z       ],
2026-06-21T09:42:01.8428742Z       "stages": {
2026-06-21T09:42:01.8429047Z         "doc": {
2026-06-21T09:42:01.8429313Z           "complete": false,
2026-06-21T09:42:01.8429561Z           "evidence": []
2026-06-21T09:42:01.8429805Z         },
2026-06-21T09:42:01.8430039Z         "impl": {
2026-06-21T09:42:01.8430296Z           "complete": true,
2026-06-21T09:42:01.8430539Z           "evidence": [
2026-06-21T09:42:01.8430778Z             {
2026-06-21T09:42:01.8431127Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.8431366Z               "line": 598
2026-06-21T09:42:01.8431609Z             }
2026-06-21T09:42:01.8431846Z           ]
2026-06-21T09:42:01.8432076Z         },
2026-06-21T09:42:01.8432315Z         "int": {
2026-06-21T09:42:01.8432572Z           "complete": false,
2026-06-21T09:42:01.8432829Z           "evidence": []
2026-06-21T09:42:01.8433063Z         },
2026-06-21T09:42:01.8433288Z         "unit": {
2026-06-21T09:42:01.8433541Z           "complete": true,
2026-06-21T09:42:01.8433791Z           "evidence": [
2026-06-21T09:42:01.8434025Z             {
2026-06-21T09:42:01.8434358Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.8434612Z               "line": 967
2026-06-21T09:42:01.8434846Z             }
2026-06-21T09:42:01.8435083Z           ]
2026-06-21T09:42:01.8435298Z         }
2026-06-21T09:42:01.8435528Z       }
2026-06-21T09:42:01.8435757Z     },
2026-06-21T09:42:01.8435984Z     {
2026-06-21T09:42:01.8436367Z       "id": "REQ-SEAM-HISTORY",
2026-06-21T09:42:01.8436902Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-21T09:42:01.8437283Z       "requiredStages": [
2026-06-21T09:42:01.8437517Z         "impl",
2026-06-21T09:42:01.8437756Z         "unit",
2026-06-21T09:42:01.8437989Z         "int"
2026-06-21T09:42:01.8438227Z       ],
2026-06-21T09:42:01.8438470Z       "stages": {
2026-06-21T09:42:01.8438700Z         "doc": {
2026-06-21T09:42:01.8439018Z           "complete": false,
2026-06-21T09:42:01.8439268Z           "evidence": []
2026-06-21T09:42:01.8439497Z         },
2026-06-21T09:42:01.8439741Z         "impl": {
2026-06-21T09:42:01.8439998Z           "complete": true,
2026-06-21T09:42:01.8440241Z           "evidence": [
2026-06-21T09:42:01.8440474Z             {
2026-06-21T09:42:01.8440789Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:42:01.8441032Z               "line": 24
2026-06-21T09:42:01.8441262Z             },
2026-06-21T09:42:01.8441498Z             {
2026-06-21T09:42:01.8441825Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:42:01.8442068Z               "line": 22
2026-06-21T09:42:01.8442331Z             }
2026-06-21T09:42:01.8442593Z           ]
2026-06-21T09:42:01.8442823Z         },
2026-06-21T09:42:01.8443070Z         "int": {
2026-06-21T09:42:01.8443332Z           "complete": true,
2026-06-21T09:42:01.8443571Z           "evidence": [
2026-06-21T09:42:01.8443801Z             {
2026-06-21T09:42:01.8444139Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:42:01.8444390Z               "line": 260
2026-06-21T09:42:01.8444623Z             }
2026-06-21T09:42:01.8444853Z           ]
2026-06-21T09:42:01.8445087Z         },
2026-06-21T09:42:01.8445319Z         "unit": {
2026-06-21T09:42:01.8445625Z           "complete": true,
2026-06-21T09:42:01.8445868Z           "evidence": [
2026-06-21T09:42:01.8446107Z             {
2026-06-21T09:42:01.8446422Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:42:01.8446673Z               "line": 171
2026-06-21T09:42:01.8446908Z             },
2026-06-21T09:42:01.8447142Z             {
2026-06-21T09:42:01.8447462Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:42:01.8447710Z               "line": 200
2026-06-21T09:42:01.8447954Z             },
2026-06-21T09:42:01.8448177Z             {
2026-06-21T09:42:01.8448487Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:42:01.8448764Z               "line": 220
2026-06-21T09:42:01.8449069Z             },
2026-06-21T09:42:01.8449317Z             {
2026-06-21T09:42:01.8449685Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:42:01.8449934Z               "line": 199
2026-06-21T09:42:01.8450172Z             },
2026-06-21T09:42:01.8450400Z             {
2026-06-21T09:42:01.8450782Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:42:01.8451025Z               "line": 219
2026-06-21T09:42:01.8451296Z             },
2026-06-21T09:42:01.8451541Z             {
2026-06-21T09:42:01.8451879Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:42:01.8452159Z               "line": 244
2026-06-21T09:42:01.8452395Z             },
2026-06-21T09:42:01.8452624Z             {
2026-06-21T09:42:01.8452943Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:42:01.8453187Z               "line": 276
2026-06-21T09:42:01.8453416Z             },
2026-06-21T09:42:01.8453649Z             {
2026-06-21T09:42:01.8453978Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:42:01.8454221Z               "line": 297
2026-06-21T09:42:01.8454464Z             },
2026-06-21T09:42:01.8454690Z             {
2026-06-21T09:42:01.8455017Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:42:01.8455264Z               "line": 324
2026-06-21T09:42:01.8455502Z             }
2026-06-21T09:42:01.8455737Z           ]
2026-06-21T09:42:01.8455961Z         }
2026-06-21T09:42:01.8456194Z       }
2026-06-21T09:42:01.8456533Z     },
2026-06-21T09:42:01.8456767Z     {
2026-06-21T09:42:01.8457033Z       "id": "REQ-SEAM-INJECT",
2026-06-21T09:42:01.8457679Z       "title": "inject-input methods configurable per activity-state",
2026-06-21T09:42:01.8457946Z       "requiredStages": [
2026-06-21T09:42:01.8458180Z         "impl",
2026-06-21T09:42:01.8458422Z         "unit"
2026-06-21T09:42:01.8458647Z       ],
2026-06-21T09:42:01.8458886Z       "stages": {
2026-06-21T09:42:01.8459201Z         "doc": {
2026-06-21T09:42:01.8459468Z           "complete": false,
2026-06-21T09:42:01.8459730Z           "evidence": []
2026-06-21T09:42:01.8459957Z         },
2026-06-21T09:42:01.8460194Z         "impl": {
2026-06-21T09:42:01.8460446Z           "complete": true,
2026-06-21T09:42:01.8460688Z           "evidence": [
2026-06-21T09:42:01.8460908Z             {
2026-06-21T09:42:01.8461246Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.8461490Z               "line": 19
2026-06-21T09:42:01.8461720Z             },
2026-06-21T09:42:01.8461962Z             {
2026-06-21T09:42:01.8462292Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.8462542Z               "line": 111
2026-06-21T09:42:01.8462770Z             }
2026-06-21T09:42:01.8463008Z           ]
2026-06-21T09:42:01.8463241Z         },
2026-06-21T09:42:01.8463470Z         "int": {
2026-06-21T09:42:01.8463719Z           "complete": false,
2026-06-21T09:42:01.8463958Z           "evidence": []
2026-06-21T09:42:01.8464195Z         },
2026-06-21T09:42:01.8464438Z         "unit": {
2026-06-21T09:42:01.8464700Z           "complete": true,
2026-06-21T09:42:01.8464940Z           "evidence": [
2026-06-21T09:42:01.8465169Z             {
2026-06-21T09:42:01.8465505Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.8465752Z               "line": 345
2026-06-21T09:42:01.8465983Z             },
2026-06-21T09:42:01.8466216Z             {
2026-06-21T09:42:01.8466550Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.8466803Z               "line": 365
2026-06-21T09:42:01.8467031Z             }
2026-06-21T09:42:01.8467265Z           ]
2026-06-21T09:42:01.8467500Z         }
2026-06-21T09:42:01.8467745Z       }
2026-06-21T09:42:01.8467972Z     },
2026-06-21T09:42:01.8468212Z     {
2026-06-21T09:42:01.8468492Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-21T09:42:01.8468869Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-21T09:42:01.8469217Z       "requiredStages": [
2026-06-21T09:42:01.8469446Z         "impl",
2026-06-21T09:42:01.8469685Z         "unit"
2026-06-21T09:42:01.8469907Z       ],
2026-06-21T09:42:01.8470164Z       "stages": {
2026-06-21T09:42:01.8470405Z         "doc": {
2026-06-21T09:42:01.8470655Z           "complete": false,
2026-06-21T09:42:01.8470910Z           "evidence": []
2026-06-21T09:42:01.8471144Z         },
2026-06-21T09:42:01.8471373Z         "impl": {
2026-06-21T09:42:01.8471617Z           "complete": true,
2026-06-21T09:42:01.8471864Z           "evidence": [
2026-06-21T09:42:01.8472112Z             {
2026-06-21T09:42:01.8472436Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8472689Z               "line": 18
2026-06-21T09:42:01.8472915Z             },
2026-06-21T09:42:01.8473145Z             {
2026-06-21T09:42:01.8473467Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8473716Z               "line": 431
2026-06-21T09:42:01.8473945Z             }
2026-06-21T09:42:01.8474174Z           ]
2026-06-21T09:42:01.8474402Z         },
2026-06-21T09:42:01.8474631Z         "int": {
2026-06-21T09:42:01.8474889Z           "complete": false,
2026-06-21T09:42:01.8475133Z           "evidence": []
2026-06-21T09:42:01.8475370Z         },
2026-06-21T09:42:01.8475603Z         "unit": {
2026-06-21T09:42:01.8475857Z           "complete": true,
2026-06-21T09:42:01.8476109Z           "evidence": [
2026-06-21T09:42:01.8476341Z             {
2026-06-21T09:42:01.8476675Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8477010Z               "line": 881
2026-06-21T09:42:01.8477248Z             },
2026-06-21T09:42:01.8477486Z             {
2026-06-21T09:42:01.8477915Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8478163Z               "line": 891
2026-06-21T09:42:01.8478396Z             }
2026-06-21T09:42:01.8478617Z           ]
2026-06-21T09:42:01.8478851Z         }
2026-06-21T09:42:01.8479128Z       }
2026-06-21T09:42:01.8479358Z     },
2026-06-21T09:42:01.8479586Z     {
2026-06-21T09:42:01.8479862Z       "id": "REQ-SEAM-PSYCHE",
2026-06-21T09:42:01.8480264Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-21T09:42:01.8480530Z       "requiredStages": [
2026-06-21T09:42:01.8480764Z         "impl",
2026-06-21T09:42:01.8481002Z         "unit",
2026-06-21T09:42:01.8481239Z         "int"
2026-06-21T09:42:01.8481470Z       ],
2026-06-21T09:42:01.8481713Z       "stages": {
2026-06-21T09:42:01.8481952Z         "doc": {
2026-06-21T09:42:01.8482215Z           "complete": false,
2026-06-21T09:42:01.8482467Z           "evidence": []
2026-06-21T09:42:01.8482691Z         },
2026-06-21T09:42:01.8482929Z         "impl": {
2026-06-21T09:42:01.8483193Z           "complete": true,
2026-06-21T09:42:01.8483437Z           "evidence": [
2026-06-21T09:42:01.8483673Z             {
2026-06-21T09:42:01.8483994Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T09:42:01.8484233Z               "line": 19
2026-06-21T09:42:01.8484472Z             },
2026-06-21T09:42:01.8484705Z             {
2026-06-21T09:42:01.8485015Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T09:42:01.8485267Z               "line": 12
2026-06-21T09:42:01.8485501Z             },
2026-06-21T09:42:01.8485727Z             {
2026-06-21T09:42:01.8486051Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8486294Z               "line": 301
2026-06-21T09:42:01.8486540Z             }
2026-06-21T09:42:01.8486774Z           ]
2026-06-21T09:42:01.8487012Z         },
2026-06-21T09:42:01.8487250Z         "int": {
2026-06-21T09:42:01.8487512Z           "complete": true,
2026-06-21T09:42:01.8487756Z           "evidence": [
2026-06-21T09:42:01.8487999Z             {
2026-06-21T09:42:01.8488338Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:42:01.8488572Z               "line": 259
2026-06-21T09:42:01.8488813Z             }
2026-06-21T09:42:01.8489111Z           ]
2026-06-21T09:42:01.8489350Z         },
2026-06-21T09:42:01.8489598Z         "unit": {
2026-06-21T09:42:01.8489846Z           "complete": true,
2026-06-21T09:42:01.8490093Z           "evidence": [
2026-06-21T09:42:01.8490327Z             {
2026-06-21T09:42:01.8490666Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T09:42:01.8490909Z               "line": 195
2026-06-21T09:42:01.8491144Z             },
2026-06-21T09:42:01.8491362Z             {
2026-06-21T09:42:01.8491685Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T09:42:01.8491926Z               "line": 202
2026-06-21T09:42:01.8492165Z             },
2026-06-21T09:42:01.8496028Z             {
2026-06-21T09:42:01.8496419Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T09:42:01.8496690Z               "line": 225
2026-06-21T09:42:01.8496931Z             },
2026-06-21T09:42:01.8497171Z             {
2026-06-21T09:42:01.8497505Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T09:42:01.8497753Z               "line": 106
2026-06-21T09:42:01.8498001Z             },
2026-06-21T09:42:01.8498230Z             {
2026-06-21T09:42:01.8498555Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T09:42:01.8498793Z               "line": 137
2026-06-21T09:42:01.8499117Z             },
2026-06-21T09:42:01.8499363Z             {
2026-06-21T09:42:01.8499694Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T09:42:01.8499934Z               "line": 161
2026-06-21T09:42:01.8500168Z             }
2026-06-21T09:42:01.8500401Z           ]
2026-06-21T09:42:01.8500625Z         }
2026-06-21T09:42:01.8501011Z       }
2026-06-21T09:42:01.8501245Z     },
2026-06-21T09:42:01.8501469Z     {
2026-06-21T09:42:01.8501732Z       "id": "REQ-SEAM-RESUME",
2026-06-21T09:42:01.8502364Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-21T09:42:01.8502629Z       "requiredStages": [
2026-06-21T09:42:01.8502862Z         "impl",
2026-06-21T09:42:01.8503097Z         "unit"
2026-06-21T09:42:01.8503335Z       ],
2026-06-21T09:42:01.8503569Z       "stages": {
2026-06-21T09:42:01.8503802Z         "doc": {
2026-06-21T09:42:01.8504060Z           "complete": false,
2026-06-21T09:42:01.8504299Z           "evidence": []
2026-06-21T09:42:01.8504532Z         },
2026-06-21T09:42:01.8504774Z         "impl": {
2026-06-21T09:42:01.8505034Z           "complete": true,
2026-06-21T09:42:01.8505273Z           "evidence": [
2026-06-21T09:42:01.8505505Z             {
2026-06-21T09:42:01.8505825Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:42:01.8506077Z               "line": 19
2026-06-21T09:42:01.8506316Z             }
2026-06-21T09:42:01.8506556Z           ]
2026-06-21T09:42:01.8506779Z         },
2026-06-21T09:42:01.8507008Z         "int": {
2026-06-21T09:42:01.8507269Z           "complete": false,
2026-06-21T09:42:01.8507519Z           "evidence": []
2026-06-21T09:42:01.8507755Z         },
2026-06-21T09:42:01.8507984Z         "unit": {
2026-06-21T09:42:01.8508233Z           "complete": true,
2026-06-21T09:42:01.8508481Z           "evidence": [
2026-06-21T09:42:01.8508714Z             {
2026-06-21T09:42:01.8509101Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:42:01.8509344Z               "line": 201
2026-06-21T09:42:01.8509576Z             },
2026-06-21T09:42:01.8509801Z             {
2026-06-21T09:42:01.8510127Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:42:01.8510380Z               "line": 223
2026-06-21T09:42:01.8510613Z             },
2026-06-21T09:42:01.8510846Z             {
2026-06-21T09:42:01.8511166Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:42:01.8511429Z               "line": 244
2026-06-21T09:42:01.8511663Z             }
2026-06-21T09:42:01.8511896Z           ]
2026-06-21T09:42:01.8512129Z         }
2026-06-21T09:42:01.8512358Z       }
2026-06-21T09:42:01.8512579Z     },
2026-06-21T09:42:01.8512809Z     {
2026-06-21T09:42:01.8513070Z       "id": "REQ-SEAM-SPAWN",
2026-06-21T09:42:01.8513347Z       "title": "spawn-session seam",
2026-06-21T09:42:01.8513610Z       "requiredStages": [
2026-06-21T09:42:01.8513848Z         "impl",
2026-06-21T09:42:01.8514076Z         "unit"
2026-06-21T09:42:01.8514314Z       ],
2026-06-21T09:42:01.8514553Z       "stages": {
2026-06-21T09:42:01.8514787Z         "doc": {
2026-06-21T09:42:01.8515035Z           "complete": false,
2026-06-21T09:42:01.8515287Z           "evidence": []
2026-06-21T09:42:01.8515529Z         },
2026-06-21T09:42:01.8515761Z         "impl": {
2026-06-21T09:42:01.8516027Z           "complete": true,
2026-06-21T09:42:01.8516271Z           "evidence": [
2026-06-21T09:42:01.8516514Z             {
2026-06-21T09:42:01.8516866Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.8517120Z               "line": 20
2026-06-21T09:42:01.8517359Z             }
2026-06-21T09:42:01.8517596Z           ]
2026-06-21T09:42:01.8517825Z         },
2026-06-21T09:42:01.8518051Z         "int": {
2026-06-21T09:42:01.8518306Z           "complete": false,
2026-06-21T09:42:01.8518553Z           "evidence": []
2026-06-21T09:42:01.8518784Z         },
2026-06-21T09:42:01.8519078Z         "unit": {
2026-06-21T09:42:01.8519332Z           "complete": true,
2026-06-21T09:42:01.8519584Z           "evidence": [
2026-06-21T09:42:01.8519817Z             {
2026-06-21T09:42:01.8520170Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.8520413Z               "line": 608
2026-06-21T09:42:01.8520646Z             },
2026-06-21T09:42:01.8520878Z             {
2026-06-21T09:42:01.8521230Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.8521612Z               "line": 615
2026-06-21T09:42:01.8521846Z             },
2026-06-21T09:42:01.8522165Z             {
2026-06-21T09:42:01.8522514Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.8522771Z               "line": 721
2026-06-21T09:42:01.8523009Z             },
2026-06-21T09:42:01.8523233Z             {
2026-06-21T09:42:01.8523578Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.8523817Z               "line": 727
2026-06-21T09:42:01.8524059Z             },
2026-06-21T09:42:01.8524288Z             {
2026-06-21T09:42:01.8524622Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.8524870Z               "line": 752
2026-06-21T09:42:01.8525104Z             },
2026-06-21T09:42:01.8525333Z             {
2026-06-21T09:42:01.8525658Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:42:01.8525898Z               "line": 789
2026-06-21T09:42:01.8526140Z             }
2026-06-21T09:42:01.8526383Z           ]
2026-06-21T09:42:01.8526616Z         }
2026-06-21T09:42:01.8526836Z       }
2026-06-21T09:42:01.8527075Z     },
2026-06-21T09:42:01.8527290Z     {
2026-06-21T09:42:01.8527561Z       "id": "REQ-SEAM-UPDATE",
2026-06-21T09:42:01.8528033Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-21T09:42:01.8528296Z       "requiredStages": [
2026-06-21T09:42:01.8528534Z         "impl",
2026-06-21T09:42:01.8528766Z         "unit"
2026-06-21T09:42:01.8529076Z       ],
2026-06-21T09:42:01.8529314Z       "stages": {
2026-06-21T09:42:01.8529568Z         "doc": {
2026-06-21T09:42:01.8529820Z           "complete": false,
2026-06-21T09:42:01.8530072Z           "evidence": []
2026-06-21T09:42:01.8530306Z         },
2026-06-21T09:42:01.8530541Z         "impl": {
2026-06-21T09:42:01.8530803Z           "complete": true,
2026-06-21T09:42:01.8531049Z           "evidence": [
2026-06-21T09:42:01.8531271Z             {
2026-06-21T09:42:01.8531642Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.8531886Z               "line": 28
2026-06-21T09:42:01.8532135Z             },
2026-06-21T09:42:01.8532362Z             {
2026-06-21T09:42:01.8532740Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.8532982Z               "line": 88
2026-06-21T09:42:01.8533221Z             }
2026-06-21T09:42:01.8533451Z           ]
2026-06-21T09:42:01.8533666Z         },
2026-06-21T09:42:01.8533892Z         "int": {
2026-06-21T09:42:01.8534143Z           "complete": false,
2026-06-21T09:42:01.8534386Z           "evidence": []
2026-06-21T09:42:01.8534605Z         },
2026-06-21T09:42:01.8534848Z         "unit": {
2026-06-21T09:42:01.8535092Z           "complete": true,
2026-06-21T09:42:01.8535340Z           "evidence": [
2026-06-21T09:42:01.8535583Z             {
2026-06-21T09:42:01.8535951Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.8536183Z               "line": 326
2026-06-21T09:42:01.8536431Z             },
2026-06-21T09:42:01.8536672Z             {
2026-06-21T09:42:01.8537043Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.8537292Z               "line": 337
2026-06-21T09:42:01.8537525Z             }
2026-06-21T09:42:01.8537758Z           ]
2026-06-21T09:42:01.8537997Z         }
2026-06-21T09:42:01.8538226Z       }
2026-06-21T09:42:01.8538455Z     },
2026-06-21T09:42:01.8538684Z     {
2026-06-21T09:42:01.8538931Z       "id": "REQ-SEC-1",
2026-06-21T09:42:01.8540195Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-21T09:42:01.8540457Z       "requiredStages": [
2026-06-21T09:42:01.8540695Z         "impl",
2026-06-21T09:42:01.8540928Z         "unit"
2026-06-21T09:42:01.8541167Z       ],
2026-06-21T09:42:01.8541416Z       "stages": {
2026-06-21T09:42:01.8541647Z         "doc": {
2026-06-21T09:42:01.8541912Z           "complete": false,
2026-06-21T09:42:01.8542279Z           "evidence": []
2026-06-21T09:42:01.8542522Z         },
2026-06-21T09:42:01.8542756Z         "impl": {
2026-06-21T09:42:01.8543109Z           "complete": true,
2026-06-21T09:42:01.8543362Z           "evidence": [
2026-06-21T09:42:01.8543586Z             {
2026-06-21T09:42:01.8543935Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:42:01.8544172Z               "line": 86
2026-06-21T09:42:01.8544410Z             },
2026-06-21T09:42:01.8544638Z             {
2026-06-21T09:42:01.8544985Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:42:01.8545233Z               "line": 116
2026-06-21T09:42:01.8545465Z             },
2026-06-21T09:42:01.8545704Z             {
2026-06-21T09:42:01.8546038Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:42:01.8546290Z               "line": 130
2026-06-21T09:42:01.8546521Z             },
2026-06-21T09:42:01.8546753Z             {
2026-06-21T09:42:01.8547085Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:42:01.8547327Z               "line": 109
2026-06-21T09:42:01.8547566Z             },
2026-06-21T09:42:01.8547805Z             {
2026-06-21T09:42:01.8548133Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:42:01.8548376Z               "line": 130
2026-06-21T09:42:01.8548600Z             },
2026-06-21T09:42:01.8548838Z             {
2026-06-21T09:42:01.8549229Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:42:01.8549482Z               "line": 143
2026-06-21T09:42:01.8549717Z             },
2026-06-21T09:42:01.8549948Z             {
2026-06-21T09:42:01.8550277Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:42:01.8550530Z               "line": 209
2026-06-21T09:42:01.8550759Z             },
2026-06-21T09:42:01.8550989Z             {
2026-06-21T09:42:01.8551322Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:42:01.8551560Z               "line": 235
2026-06-21T09:42:01.8551803Z             },
2026-06-21T09:42:01.8552023Z             {
2026-06-21T09:42:01.8552317Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8552572Z               "line": 5295
2026-06-21T09:42:01.8552805Z             }
2026-06-21T09:42:01.8553030Z           ]
2026-06-21T09:42:01.8553264Z         },
2026-06-21T09:42:01.8553497Z         "int": {
2026-06-21T09:42:01.8553759Z           "complete": false,
2026-06-21T09:42:01.8554013Z           "evidence": []
2026-06-21T09:42:01.8554251Z         },
2026-06-21T09:42:01.8554486Z         "unit": {
2026-06-21T09:42:01.8554737Z           "complete": true,
2026-06-21T09:42:01.8554984Z           "evidence": [
2026-06-21T09:42:01.8555212Z             {
2026-06-21T09:42:01.8555545Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:42:01.8555798Z               "line": 142
2026-06-21T09:42:01.8556030Z             },
2026-06-21T09:42:01.8556265Z             {
2026-06-21T09:42:01.8556607Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:42:01.8556855Z               "line": 194
2026-06-21T09:42:01.8557095Z             },
2026-06-21T09:42:01.8557333Z             {
2026-06-21T09:42:01.8557660Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:42:01.8557920Z               "line": 235
2026-06-21T09:42:01.8558154Z             },
2026-06-21T09:42:01.8558388Z             {
2026-06-21T09:42:01.8558726Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-21T09:42:01.8559027Z               "line": 140
2026-06-21T09:42:01.8559265Z             },
2026-06-21T09:42:01.8559493Z             {
2026-06-21T09:42:01.8559827Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:42:01.8560060Z               "line": 247
2026-06-21T09:42:01.8560296Z             },
2026-06-21T09:42:01.8560527Z             {
2026-06-21T09:42:01.8560856Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:42:01.8561114Z               "line": 277
2026-06-21T09:42:01.8561339Z             },
2026-06-21T09:42:01.8561691Z             {
2026-06-21T09:42:01.8562015Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:42:01.8562368Z               "line": 310
2026-06-21T09:42:01.8562606Z             },
2026-06-21T09:42:01.8562849Z             {
2026-06-21T09:42:01.8563171Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:42:01.8563414Z               "line": 329
2026-06-21T09:42:01.8563652Z             },
2026-06-21T09:42:01.8563886Z             {
2026-06-21T09:42:01.8564215Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:42:01.8564458Z               "line": 362
2026-06-21T09:42:01.8564701Z             },
2026-06-21T09:42:01.8564940Z             {
2026-06-21T09:42:01.8565259Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:42:01.8565511Z               "line": 386
2026-06-21T09:42:01.8565744Z             },
2026-06-21T09:42:01.8565980Z             {
2026-06-21T09:42:01.8566261Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8566524Z               "line": 8296
2026-06-21T09:42:01.8566749Z             }
2026-06-21T09:42:01.8566968Z           ]
2026-06-21T09:42:01.8567210Z         }
2026-06-21T09:42:01.8567429Z       }
2026-06-21T09:42:01.8567655Z     },
2026-06-21T09:42:01.8567879Z     {
2026-06-21T09:42:01.8568154Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-21T09:42:01.8578733Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-21T09:42:01.8579117Z       "requiredStages": [
2026-06-21T09:42:01.8579340Z         "impl",
2026-06-21T09:42:01.8579580Z         "unit",
2026-06-21T09:42:01.8579819Z         "int"
2026-06-21T09:42:01.8580046Z       ],
2026-06-21T09:42:01.8580285Z       "stages": {
2026-06-21T09:42:01.8580524Z         "doc": {
2026-06-21T09:42:01.8580777Z           "complete": false,
2026-06-21T09:42:01.8581030Z           "evidence": []
2026-06-21T09:42:01.8581262Z         },
2026-06-21T09:42:01.8581506Z         "impl": {
2026-06-21T09:42:01.8581767Z           "complete": true,
2026-06-21T09:42:01.8582015Z           "evidence": [
2026-06-21T09:42:01.8582243Z             {
2026-06-21T09:42:01.8582577Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.8582812Z               "line": 1066
2026-06-21T09:42:01.8583050Z             },
2026-06-21T09:42:01.8583275Z             {
2026-06-21T09:42:01.8583608Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.8583864Z               "line": 1897
2026-06-21T09:42:01.8584086Z             },
2026-06-21T09:42:01.8584325Z             {
2026-06-21T09:42:01.8584606Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8584863Z               "line": 2850
2026-06-21T09:42:01.8585101Z             }
2026-06-21T09:42:01.8585340Z           ]
2026-06-21T09:42:01.8585570Z         },
2026-06-21T09:42:01.8585802Z         "int": {
2026-06-21T09:42:01.8586175Z           "complete": true,
2026-06-21T09:42:01.8586422Z           "evidence": [
2026-06-21T09:42:01.8586740Z             {
2026-06-21T09:42:01.8587081Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:42:01.8587334Z               "line": 189
2026-06-21T09:42:01.8587564Z             },
2026-06-21T09:42:01.8587798Z             {
2026-06-21T09:42:01.8588136Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:42:01.8588374Z               "line": 524
2026-06-21T09:42:01.8588607Z             }
2026-06-21T09:42:01.8588832Z           ]
2026-06-21T09:42:01.8589123Z         },
2026-06-21T09:42:01.8589355Z         "unit": {
2026-06-21T09:42:01.8589600Z           "complete": true,
2026-06-21T09:42:01.8589854Z           "evidence": [
2026-06-21T09:42:01.8590083Z             {
2026-06-21T09:42:01.8590402Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:42:01.8590646Z               "line": 952
2026-06-21T09:42:01.8590883Z             },
2026-06-21T09:42:01.8591112Z             {
2026-06-21T09:42:01.8591408Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8591667Z               "line": 7486
2026-06-21T09:42:01.8591900Z             }
2026-06-21T09:42:01.8592136Z           ]
2026-06-21T09:42:01.8592367Z         }
2026-06-21T09:42:01.8592609Z       }
2026-06-21T09:42:01.8592837Z     },
2026-06-21T09:42:01.8593066Z     {
2026-06-21T09:42:01.8593377Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-21T09:42:01.8612323Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-21T09:42:01.8612647Z       "requiredStages": [
2026-06-21T09:42:01.8612876Z         "doc",
2026-06-21T09:42:01.8613120Z         "impl",
2026-06-21T09:42:01.8613356Z         "unit",
2026-06-21T09:42:01.8613595Z         "int"
2026-06-21T09:42:01.8613820Z       ],
2026-06-21T09:42:01.8614205Z       "stages": {
2026-06-21T09:42:01.8614440Z         "doc": {
2026-06-21T09:42:01.8614707Z           "complete": true,
2026-06-21T09:42:01.8615144Z           "evidence": [
2026-06-21T09:42:01.8615374Z             {
2026-06-21T09:42:01.8615771Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T09:42:01.8616015Z               "line": 130
2026-06-21T09:42:01.8616248Z             },
2026-06-21T09:42:01.8616481Z             {
2026-06-21T09:42:01.8616758Z               "path": "docs/MANIFEST.md",
2026-06-21T09:42:01.8617006Z               "line": 96
2026-06-21T09:42:01.8617240Z             }
2026-06-21T09:42:01.8617478Z           ]
2026-06-21T09:42:01.8617707Z         },
2026-06-21T09:42:01.8617941Z         "impl": {
2026-06-21T09:42:01.8618194Z           "complete": true,
2026-06-21T09:42:01.8618444Z           "evidence": [
2026-06-21T09:42:01.8618676Z             {
2026-06-21T09:42:01.8619120Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.8619367Z               "line": 77
2026-06-21T09:42:01.8619602Z             },
2026-06-21T09:42:01.8619841Z             {
2026-06-21T09:42:01.8620211Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.8620456Z               "line": 183
2026-06-21T09:42:01.8620684Z             },
2026-06-21T09:42:01.8620912Z             {
2026-06-21T09:42:01.8621257Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.8621501Z               "line": 222
2026-06-21T09:42:01.8621740Z             },
2026-06-21T09:42:01.8621967Z             {
2026-06-21T09:42:01.8622292Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:42:01.8622544Z               "line": 71
2026-06-21T09:42:01.8622773Z             },
2026-06-21T09:42:01.8623009Z             {
2026-06-21T09:42:01.8623333Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8623576Z               "line": 176
2026-06-21T09:42:01.8623812Z             }
2026-06-21T09:42:01.8624037Z           ]
2026-06-21T09:42:01.8624270Z         },
2026-06-21T09:42:01.8624493Z         "int": {
2026-06-21T09:42:01.8624747Z           "complete": true,
2026-06-21T09:42:01.8624990Z           "evidence": [
2026-06-21T09:42:01.8625225Z             {
2026-06-21T09:42:01.8625596Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-21T09:42:01.8625834Z               "line": 25
2026-06-21T09:42:01.8626066Z             }
2026-06-21T09:42:01.8626299Z           ]
2026-06-21T09:42:01.8626522Z         },
2026-06-21T09:42:01.8626755Z         "unit": {
2026-06-21T09:42:01.8627018Z           "complete": true,
2026-06-21T09:42:01.8627256Z           "evidence": [
2026-06-21T09:42:01.8627490Z             {
2026-06-21T09:42:01.8627853Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.8628097Z               "line": 341
2026-06-21T09:42:01.8628338Z             },
2026-06-21T09:42:01.8628567Z             {
2026-06-21T09:42:01.8628924Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:42:01.8629274Z               "line": 391
2026-06-21T09:42:01.8629504Z             },
2026-06-21T09:42:01.8629752Z             {
2026-06-21T09:42:01.8630091Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.8630334Z               "line": 1244
2026-06-21T09:42:01.8630562Z             },
2026-06-21T09:42:01.8630795Z             {
2026-06-21T09:42:01.8631124Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:42:01.8631369Z               "line": 184
2026-06-21T09:42:01.8631610Z             },
2026-06-21T09:42:01.8631831Z             {
2026-06-21T09:42:01.8632165Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:42:01.8632404Z               "line": 208
2026-06-21T09:42:01.8632643Z             },
2026-06-21T09:42:01.8632872Z             {
2026-06-21T09:42:01.8633206Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:42:01.8633453Z               "line": 236
2026-06-21T09:42:01.8633796Z             },
2026-06-21T09:42:01.8634030Z             {
2026-06-21T09:42:01.8634358Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:42:01.8634701Z               "line": 945
2026-06-21T09:42:01.8634940Z             }
2026-06-21T09:42:01.8635165Z           ]
2026-06-21T09:42:01.8635407Z         }
2026-06-21T09:42:01.8635636Z       }
2026-06-21T09:42:01.8635870Z     },
2026-06-21T09:42:01.8636095Z     {
2026-06-21T09:42:01.8636341Z       "id": "REQ-SHELL-1",
2026-06-21T09:42:01.8639146Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-21T09:42:01.8639404Z       "requiredStages": [
2026-06-21T09:42:01.8639637Z         "impl",
2026-06-21T09:42:01.8639872Z         "unit",
2026-06-21T09:42:01.8640112Z         "int"
2026-06-21T09:42:01.8640346Z       ],
2026-06-21T09:42:01.8640575Z       "stages": {
2026-06-21T09:42:01.8640816Z         "doc": {
2026-06-21T09:42:01.8641065Z           "complete": false,
2026-06-21T09:42:01.8641318Z           "evidence": []
2026-06-21T09:42:01.8641552Z         },
2026-06-21T09:42:01.8641785Z         "impl": {
2026-06-21T09:42:01.8642041Z           "complete": true,
2026-06-21T09:42:01.8642279Z           "evidence": [
2026-06-21T09:42:01.8642506Z             {
2026-06-21T09:42:01.8642846Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8643088Z               "line": 189
2026-06-21T09:42:01.8643312Z             },
2026-06-21T09:42:01.8643551Z             {
2026-06-21T09:42:01.8643893Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8644133Z               "line": 268
2026-06-21T09:42:01.8644371Z             },
2026-06-21T09:42:01.8644604Z             {
2026-06-21T09:42:01.8644956Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:42:01.8645214Z               "line": 27
2026-06-21T09:42:01.8645443Z             },
2026-06-21T09:42:01.8645672Z             {
2026-06-21T09:42:01.8646010Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:42:01.8646253Z               "line": 52
2026-06-21T09:42:01.8646487Z             },
2026-06-21T09:42:01.8646721Z             {
2026-06-21T09:42:01.8647064Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:42:01.8647311Z               "line": 144
2026-06-21T09:42:01.8647546Z             },
2026-06-21T09:42:01.8647776Z             {
2026-06-21T09:42:01.8648123Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:42:01.8648353Z               "line": 176
2026-06-21T09:42:01.8648578Z             },
2026-06-21T09:42:01.8648810Z             {
2026-06-21T09:42:01.8649241Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8649478Z               "line": 22
2026-06-21T09:42:01.8649716Z             },
2026-06-21T09:42:01.8649955Z             {
2026-06-21T09:42:01.8650295Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8650538Z               "line": 65
2026-06-21T09:42:01.8650776Z             },
2026-06-21T09:42:01.8651000Z             {
2026-06-21T09:42:01.8651348Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8651596Z               "line": 76
2026-06-21T09:42:01.8651835Z             },
2026-06-21T09:42:01.8652055Z             {
2026-06-21T09:42:01.8652404Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8652658Z               "line": 151
2026-06-21T09:42:01.8652890Z             },
2026-06-21T09:42:01.8653129Z             {
2026-06-21T09:42:01.8653463Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8653711Z               "line": 210
2026-06-21T09:42:01.8653929Z             },
2026-06-21T09:42:01.8654158Z             {
2026-06-21T09:42:01.8654611Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8654859Z               "line": 259
2026-06-21T09:42:01.8655179Z             },
2026-06-21T09:42:01.8655408Z             {
2026-06-21T09:42:01.8655751Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8655994Z               "line": 281
2026-06-21T09:42:01.8656227Z             },
2026-06-21T09:42:01.8656460Z             {
2026-06-21T09:42:01.8656803Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8657057Z               "line": 294
2026-06-21T09:42:01.8657291Z             },
2026-06-21T09:42:01.8657529Z             {
2026-06-21T09:42:01.8657851Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.8658092Z               "line": 217
2026-06-21T09:42:01.8658326Z             },
2026-06-21T09:42:01.8658556Z             {
2026-06-21T09:42:01.8658899Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.8659232Z               "line": 233
2026-06-21T09:42:01.8659481Z             },
2026-06-21T09:42:01.8659723Z             {
2026-06-21T09:42:01.8660072Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.8660324Z               "line": 41
2026-06-21T09:42:01.8660548Z             },
2026-06-21T09:42:01.8660781Z             {
2026-06-21T09:42:01.8661127Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.8661375Z               "line": 222
2026-06-21T09:42:01.8661608Z             },
2026-06-21T09:42:01.8661842Z             {
2026-06-21T09:42:01.8662161Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:42:01.8662405Z               "line": 173
2026-06-21T09:42:01.8662644Z             },
2026-06-21T09:42:01.8662867Z             {
2026-06-21T09:42:01.8663176Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.8663427Z               "line": 354
2026-06-21T09:42:01.8663660Z             },
2026-06-21T09:42:01.8663889Z             {
2026-06-21T09:42:01.8664203Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.8664451Z               "line": 419
2026-06-21T09:42:01.8664681Z             },
2026-06-21T09:42:01.8664915Z             {
2026-06-21T09:42:01.8665249Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.8665492Z               "line": 333
2026-06-21T09:42:01.8665725Z             },
2026-06-21T09:42:01.8665963Z             {
2026-06-21T09:42:01.8666258Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8666506Z               "line": 6320
2026-06-21T09:42:01.8666739Z             },
2026-06-21T09:42:01.8666974Z             {
2026-06-21T09:42:01.8667268Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8667517Z               "line": 6470
2026-06-21T09:42:01.8667751Z             },
2026-06-21T09:42:01.8667983Z             {
2026-06-21T09:42:01.8668269Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8668516Z               "line": 6646
2026-06-21T09:42:01.8668743Z             }
2026-06-21T09:42:01.8669025Z           ]
2026-06-21T09:42:01.8669258Z         },
2026-06-21T09:42:01.8669512Z         "int": {
2026-06-21T09:42:01.8669816Z           "complete": true,
2026-06-21T09:42:01.8670065Z           "evidence": [
2026-06-21T09:42:01.8670327Z             {
2026-06-21T09:42:01.8672618Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:42:01.8672894Z               "line": 713
2026-06-21T09:42:01.8673122Z             },
2026-06-21T09:42:01.8673355Z             {
2026-06-21T09:42:01.8673731Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T09:42:01.8673968Z               "line": 8
2026-06-21T09:42:01.8674206Z             },
2026-06-21T09:42:01.8674444Z             {
2026-06-21T09:42:01.8674797Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T09:42:01.8675040Z               "line": 49
2026-06-21T09:42:01.8675269Z             },
2026-06-21T09:42:01.8675513Z             {
2026-06-21T09:42:01.8676003Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.8676256Z               "line": 778
2026-06-21T09:42:01.8676632Z             },
2026-06-21T09:42:01.8676866Z             {
2026-06-21T09:42:01.8677214Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.8677462Z               "line": 1213
2026-06-21T09:42:01.8677696Z             },
2026-06-21T09:42:01.8677909Z             {
2026-06-21T09:42:01.8678257Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T09:42:01.8678505Z               "line": 17
2026-06-21T09:42:01.8678740Z             },
2026-06-21T09:42:01.8679058Z             {
2026-06-21T09:42:01.8679380Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T09:42:01.8679642Z               "line": 14
2026-06-21T09:42:01.8679875Z             }
2026-06-21T09:42:01.8680109Z           ]
2026-06-21T09:42:01.8680343Z         },
2026-06-21T09:42:01.8680577Z         "unit": {
2026-06-21T09:42:01.8680829Z           "complete": true,
2026-06-21T09:42:01.8681082Z           "evidence": [
2026-06-21T09:42:01.8681316Z             {
2026-06-21T09:42:01.8681668Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:42:01.8681920Z               "line": 246
2026-06-21T09:42:01.8682161Z             },
2026-06-21T09:42:01.8682394Z             {
2026-06-21T09:42:01.8682747Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:42:01.8682995Z               "line": 279
2026-06-21T09:42:01.8683229Z             },
2026-06-21T09:42:01.8683454Z             {
2026-06-21T09:42:01.8683798Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:42:01.8684045Z               "line": 319
2026-06-21T09:42:01.8684273Z             },
2026-06-21T09:42:01.8684510Z             {
2026-06-21T09:42:01.8684853Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8685086Z               "line": 599
2026-06-21T09:42:01.8685328Z             },
2026-06-21T09:42:01.8685548Z             {
2026-06-21T09:42:01.8685896Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8686144Z               "line": 672
2026-06-21T09:42:01.8686374Z             },
2026-06-21T09:42:01.8686607Z             {
2026-06-21T09:42:01.8686951Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8687206Z               "line": 816
2026-06-21T09:42:01.8687440Z             },
2026-06-21T09:42:01.8687679Z             {
2026-06-21T09:42:01.8688008Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.8688261Z               "line": 595
2026-06-21T09:42:01.8688488Z             },
2026-06-21T09:42:01.8688722Z             {
2026-06-21T09:42:01.8689166Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:42:01.8689418Z               "line": 399
2026-06-21T09:42:01.8689660Z             },
2026-06-21T09:42:01.8689887Z             {
2026-06-21T09:42:01.8690188Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8690445Z               "line": 8976
2026-06-21T09:42:01.8690702Z             },
2026-06-21T09:42:01.8690936Z             {
2026-06-21T09:42:01.8691232Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8691481Z               "line": 9300
2026-06-21T09:42:01.8691714Z             },
2026-06-21T09:42:01.8691937Z             {
2026-06-21T09:42:01.8692238Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8692490Z               "line": 9717
2026-06-21T09:42:01.8692731Z             }
2026-06-21T09:42:01.8692964Z           ]
2026-06-21T09:42:01.8693199Z         }
2026-06-21T09:42:01.8693418Z       }
2026-06-21T09:42:01.8693656Z     },
2026-06-21T09:42:01.8693889Z     {
2026-06-21T09:42:01.8694142Z       "id": "REQ-SHELL-2",
2026-06-21T09:42:01.8698400Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-21T09:42:01.8698897Z       "requiredStages": [
2026-06-21T09:42:01.8699217Z         "impl",
2026-06-21T09:42:01.8699475Z         "unit",
2026-06-21T09:42:01.8699731Z         "int"
2026-06-21T09:42:01.8699968Z       ],
2026-06-21T09:42:01.8700206Z       "stages": {
2026-06-21T09:42:01.8700443Z         "doc": {
2026-06-21T09:42:01.8700705Z           "complete": false,
2026-06-21T09:42:01.8700957Z           "evidence": []
2026-06-21T09:42:01.8701192Z         },
2026-06-21T09:42:01.8701426Z         "impl": {
2026-06-21T09:42:01.8701688Z           "complete": true,
2026-06-21T09:42:01.8701940Z           "evidence": [
2026-06-21T09:42:01.8702164Z             {
2026-06-21T09:42:01.8702522Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.8702779Z               "line": 217
2026-06-21T09:42:01.8703026Z             },
2026-06-21T09:42:01.8703257Z             {
2026-06-21T09:42:01.8703606Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.8703858Z               "line": 403
2026-06-21T09:42:01.8707965Z             },
2026-06-21T09:42:01.8708236Z             {
2026-06-21T09:42:01.8708598Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:42:01.8708857Z               "line": 250
2026-06-21T09:42:01.8709166Z             },
2026-06-21T09:42:01.8709438Z             {
2026-06-21T09:42:01.8709795Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.8710049Z               "line": 403
2026-06-21T09:42:01.8710277Z             },
2026-06-21T09:42:01.8710519Z             {
2026-06-21T09:42:01.8710874Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8711117Z               "line": 30
2026-06-21T09:42:01.8711361Z             },
2026-06-21T09:42:01.8711599Z             {
2026-06-21T09:42:01.8711953Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8712195Z               "line": 409
2026-06-21T09:42:01.8712433Z             },
2026-06-21T09:42:01.8712672Z             {
2026-06-21T09:42:01.8713006Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8713264Z               "line": 445
2026-06-21T09:42:01.8713491Z             },
2026-06-21T09:42:01.8713718Z             {
2026-06-21T09:42:01.8714051Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8714310Z               "line": 660
2026-06-21T09:42:01.8714548Z             },
2026-06-21T09:42:01.8714776Z             {
2026-06-21T09:42:01.8715125Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.8715372Z               "line": 348
2026-06-21T09:42:01.8715605Z             },
2026-06-21T09:42:01.8715836Z             {
2026-06-21T09:42:01.8716191Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:42:01.8716446Z               "line": 115
2026-06-21T09:42:01.8716689Z             },
2026-06-21T09:42:01.8716918Z             {
2026-06-21T09:42:01.8717271Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8717524Z               "line": 120
2026-06-21T09:42:01.8717749Z             },
2026-06-21T09:42:01.8718002Z             {
2026-06-21T09:42:01.8718360Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8718607Z               "line": 374
2026-06-21T09:42:01.8718853Z             },
2026-06-21T09:42:01.8719158Z             {
2026-06-21T09:42:01.8719525Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8719778Z               "line": 500
2026-06-21T09:42:01.8720017Z             },
2026-06-21T09:42:01.8720261Z             {
2026-06-21T09:42:01.8720605Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8720846Z               "line": 24
2026-06-21T09:42:01.8721065Z             },
2026-06-21T09:42:01.8721453Z             {
2026-06-21T09:42:01.8721806Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8722150Z               "line": 76
2026-06-21T09:42:01.8722393Z             },
2026-06-21T09:42:01.8722622Z             {
2026-06-21T09:42:01.8722975Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8723284Z               "line": 154
2026-06-21T09:42:01.8723524Z             },
2026-06-21T09:42:01.8723762Z             {
2026-06-21T09:42:01.8724104Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8724353Z               "line": 177
2026-06-21T09:42:01.8724593Z             },
2026-06-21T09:42:01.8724827Z             {
2026-06-21T09:42:01.8725175Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8725418Z               "line": 273
2026-06-21T09:42:01.8725661Z             },
2026-06-21T09:42:01.8725880Z             {
2026-06-21T09:42:01.8726224Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8726480Z               "line": 456
2026-06-21T09:42:01.8726718Z             },
2026-06-21T09:42:01.8726964Z             {
2026-06-21T09:42:01.8727312Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8727564Z               "line": 538
2026-06-21T09:42:01.8727803Z             },
2026-06-21T09:42:01.8728055Z             {
2026-06-21T09:42:01.8728399Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T09:42:01.8728643Z               "line": 27
2026-06-21T09:42:01.8728877Z             },
2026-06-21T09:42:01.8729167Z             {
2026-06-21T09:42:01.8729557Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T09:42:01.8729799Z               "line": 48
2026-06-21T09:42:01.8730038Z             },
2026-06-21T09:42:01.8730258Z             {
2026-06-21T09:42:01.8730596Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.8730840Z               "line": 517
2026-06-21T09:42:01.8731087Z             },
2026-06-21T09:42:01.8731316Z             {
2026-06-21T09:42:01.8731601Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8731858Z               "line": 1921
2026-06-21T09:42:01.8732081Z             },
2026-06-21T09:42:01.8732304Z             {
2026-06-21T09:42:01.8732590Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8732829Z               "line": 6334
2026-06-21T09:42:01.8733068Z             },
2026-06-21T09:42:01.8733282Z             {
2026-06-21T09:42:01.8733582Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8733825Z               "line": 6395
2026-06-21T09:42:01.8734065Z             },
2026-06-21T09:42:01.8734304Z             {
2026-06-21T09:42:01.8734592Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8734843Z               "line": 6423
2026-06-21T09:42:01.8735072Z             },
2026-06-21T09:42:01.8735306Z             {
2026-06-21T09:42:01.8735591Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8735853Z               "line": 6477
2026-06-21T09:42:01.8736092Z             },
2026-06-21T09:42:01.8736321Z             {
2026-06-21T09:42:01.8736617Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8736865Z               "line": 6732
2026-06-21T09:42:01.8737101Z             },
2026-06-21T09:42:01.8737329Z             {
2026-06-21T09:42:01.8737629Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8737877Z               "line": 6792
2026-06-21T09:42:01.8738110Z             },
2026-06-21T09:42:01.8738358Z             {
2026-06-21T09:42:01.8738654Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.8738902Z               "line": 298
2026-06-21T09:42:01.8739217Z             },
2026-06-21T09:42:01.8739475Z             {
2026-06-21T09:42:01.8739781Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.8740016Z               "line": 339
2026-06-21T09:42:01.8740255Z             }
2026-06-21T09:42:01.8740485Z           ]
2026-06-21T09:42:01.8740837Z         },
2026-06-21T09:42:01.8741076Z         "int": {
2026-06-21T09:42:01.8741337Z           "complete": true,
2026-06-21T09:42:01.8741687Z           "evidence": [
2026-06-21T09:42:01.8741914Z             {
2026-06-21T09:42:01.8742270Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:42:01.8742512Z               "line": 706
2026-06-21T09:42:01.8742741Z             },
2026-06-21T09:42:01.8742970Z             {
2026-06-21T09:42:01.8743323Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.8743580Z               "line": 778
2026-06-21T09:42:01.8743808Z             },
2026-06-21T09:42:01.8744038Z             {
2026-06-21T09:42:01.8744371Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.8744625Z               "line": 1213
2026-06-21T09:42:01.8744854Z             },
2026-06-21T09:42:01.8745095Z             {
2026-06-21T09:42:01.8745478Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T09:42:01.8745717Z               "line": 18
2026-06-21T09:42:01.8745956Z             }
2026-06-21T09:42:01.8746176Z           ]
2026-06-21T09:42:01.8746418Z         },
2026-06-21T09:42:01.8746652Z         "unit": {
2026-06-21T09:42:01.8746919Z           "complete": true,
2026-06-21T09:42:01.8747173Z           "evidence": [
2026-06-21T09:42:01.8747396Z             {
2026-06-21T09:42:01.8747748Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8747988Z               "line": 744
2026-06-21T09:42:01.8748223Z             },
2026-06-21T09:42:01.8748442Z             {
2026-06-21T09:42:01.8748781Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:42:01.8749100Z               "line": 796
2026-06-21T09:42:01.8749348Z             },
2026-06-21T09:42:01.8749581Z             {
2026-06-21T09:42:01.8749925Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8750167Z               "line": 705
2026-06-21T09:42:01.8750402Z             },
2026-06-21T09:42:01.8750648Z             {
2026-06-21T09:42:01.8750997Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8751239Z               "line": 754
2026-06-21T09:42:01.8751478Z             },
2026-06-21T09:42:01.8751717Z             {
2026-06-21T09:42:01.8752069Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8752309Z               "line": 778
2026-06-21T09:42:01.8752541Z             },
2026-06-21T09:42:01.8752769Z             {
2026-06-21T09:42:01.8753115Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8753368Z               "line": 603
2026-06-21T09:42:01.8753602Z             },
2026-06-21T09:42:01.8753835Z             {
2026-06-21T09:42:01.8754184Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8754421Z               "line": 624
2026-06-21T09:42:01.8754665Z             },
2026-06-21T09:42:01.8754885Z             {
2026-06-21T09:42:01.8755228Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8755472Z               "line": 660
2026-06-21T09:42:01.8755707Z             },
2026-06-21T09:42:01.8755939Z             {
2026-06-21T09:42:01.8756282Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8756536Z               "line": 714
2026-06-21T09:42:01.8756760Z             },
2026-06-21T09:42:01.8756988Z             {
2026-06-21T09:42:01.8757331Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8757579Z               "line": 732
2026-06-21T09:42:01.8757822Z             },
2026-06-21T09:42:01.8758058Z             {
2026-06-21T09:42:01.8758394Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8758644Z               "line": 766
2026-06-21T09:42:01.8758873Z             },
2026-06-21T09:42:01.8759183Z             {
2026-06-21T09:42:01.8759559Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:42:01.8759798Z               "line": 841
2026-06-21T09:42:01.8760132Z             },
2026-06-21T09:42:01.8760370Z             {
2026-06-21T09:42:01.8760713Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T09:42:01.8761089Z               "line": 85
2026-06-21T09:42:01.8761324Z             },
2026-06-21T09:42:01.8761562Z             {
2026-06-21T09:42:01.8761858Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8762109Z               "line": 8044
2026-06-21T09:42:01.8762348Z             },
2026-06-21T09:42:01.8762573Z             {
2026-06-21T09:42:01.8762859Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8763107Z               "line": 9054
2026-06-21T09:42:01.8763339Z             },
2026-06-21T09:42:01.8763567Z             {
2026-06-21T09:42:01.8763857Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8764109Z               "line": 9124
2026-06-21T09:42:01.8764342Z             },
2026-06-21T09:42:01.8764576Z             {
2026-06-21T09:42:01.8764867Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8765130Z               "line": 9162
2026-06-21T09:42:01.8765354Z             }
2026-06-21T09:42:01.8765587Z           ]
2026-06-21T09:42:01.8765821Z         }
2026-06-21T09:42:01.8766051Z       }
2026-06-21T09:42:01.8766286Z     },
2026-06-21T09:42:01.8766513Z     {
2026-06-21T09:42:01.8766777Z       "id": "REQ-SHELL-3",
2026-06-21T09:42:01.8772151Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-21T09:42:01.8772447Z       "requiredStages": [
2026-06-21T09:42:01.8772689Z         "impl",
2026-06-21T09:42:01.8772932Z         "unit",
2026-06-21T09:42:01.8773161Z         "int"
2026-06-21T09:42:01.8773401Z       ],
2026-06-21T09:42:01.8773643Z       "stages": {
2026-06-21T09:42:01.8773871Z         "doc": {
2026-06-21T09:42:01.8774131Z           "complete": false,
2026-06-21T09:42:01.8774383Z           "evidence": []
2026-06-21T09:42:01.8774621Z         },
2026-06-21T09:42:01.8774845Z         "impl": {
2026-06-21T09:42:01.8775108Z           "complete": true,
2026-06-21T09:42:01.8775352Z           "evidence": [
2026-06-21T09:42:01.8775580Z             {
2026-06-21T09:42:01.8775914Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.8776171Z               "line": 229
2026-06-21T09:42:01.8776409Z             },
2026-06-21T09:42:01.8776640Z             {
2026-06-21T09:42:01.8776985Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:42:01.8777231Z               "line": 36
2026-06-21T09:42:01.8777474Z             },
2026-06-21T09:42:01.8777699Z             {
2026-06-21T09:42:01.8778056Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:42:01.8778318Z               "line": 137
2026-06-21T09:42:01.8778548Z             },
2026-06-21T09:42:01.8778781Z             {
2026-06-21T09:42:01.8779211Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:42:01.8779495Z               "line": 153
2026-06-21T09:42:01.8779725Z             },
2026-06-21T09:42:01.8779960Z             {
2026-06-21T09:42:01.8780307Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:42:01.8780561Z               "line": 165
2026-06-21T09:42:01.8780800Z             },
2026-06-21T09:42:01.8781028Z             {
2026-06-21T09:42:01.8781377Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:42:01.8781619Z               "line": 242
2026-06-21T09:42:01.8781852Z             },
2026-06-21T09:42:01.8782074Z             {
2026-06-21T09:42:01.8782519Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:42:01.8782773Z               "line": 267
2026-06-21T09:42:01.8783097Z             },
2026-06-21T09:42:01.8783326Z             {
2026-06-21T09:42:01.8783665Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:42:01.8783908Z               "line": 293
2026-06-21T09:42:01.8784155Z             },
2026-06-21T09:42:01.8784383Z             {
2026-06-21T09:42:01.8784724Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T09:42:01.8784968Z               "line": 51
2026-06-21T09:42:01.8785205Z             },
2026-06-21T09:42:01.8785439Z             {
2026-06-21T09:42:01.8785777Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8786025Z               "line": 333
2026-06-21T09:42:01.8786255Z             },
2026-06-21T09:42:01.8786489Z             {
2026-06-21T09:42:01.8786833Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8787080Z               "line": 373
2026-06-21T09:42:01.8787322Z             },
2026-06-21T09:42:01.8787545Z             {
2026-06-21T09:42:01.8787897Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8788145Z               "line": 602
2026-06-21T09:42:01.8788378Z             },
2026-06-21T09:42:01.8788606Z             {
2026-06-21T09:42:01.8789041Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:42:01.8789293Z               "line": 132
2026-06-21T09:42:01.8789536Z             },
2026-06-21T09:42:01.8789771Z             {
2026-06-21T09:42:01.8790112Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8790363Z               "line": 448
2026-06-21T09:42:01.8790591Z             },
2026-06-21T09:42:01.8790830Z             {
2026-06-21T09:42:01.8791150Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:42:01.8791393Z               "line": 74
2026-06-21T09:42:01.8791622Z             },
2026-06-21T09:42:01.8791855Z             {
2026-06-21T09:42:01.8792213Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.8792461Z               "line": 605
2026-06-21T09:42:01.8792699Z             },
2026-06-21T09:42:01.8792932Z             {
2026-06-21T09:42:01.8793276Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.8793524Z               "line": 396
2026-06-21T09:42:01.8793756Z             },
2026-06-21T09:42:01.8793995Z             {
2026-06-21T09:42:01.8794295Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8794540Z               "line": 6518
2026-06-21T09:42:01.8794772Z             }
2026-06-21T09:42:01.8795005Z           ]
2026-06-21T09:42:01.8795237Z         },
2026-06-21T09:42:01.8795470Z         "int": {
2026-06-21T09:42:01.8795727Z           "complete": true,
2026-06-21T09:42:01.8795980Z           "evidence": [
2026-06-21T09:42:01.8796214Z             {
2026-06-21T09:42:01.8796567Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.8796810Z               "line": 1262
2026-06-21T09:42:01.8797054Z             },
2026-06-21T09:42:01.8797291Z             {
2026-06-21T09:42:01.8797630Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-21T09:42:01.8797872Z               "line": 17
2026-06-21T09:42:01.8798114Z             }
2026-06-21T09:42:01.8798352Z           ]
2026-06-21T09:42:01.8798579Z         },
2026-06-21T09:42:01.8798823Z         "unit": {
2026-06-21T09:42:01.8799148Z           "complete": true,
2026-06-21T09:42:01.8799410Z           "evidence": [
2026-06-21T09:42:01.8799649Z             {
2026-06-21T09:42:01.8799997Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:42:01.8800250Z               "line": 311
2026-06-21T09:42:01.8800491Z             },
2026-06-21T09:42:01.8800728Z             {
2026-06-21T09:42:01.8801066Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:42:01.8801319Z               "line": 325
2026-06-21T09:42:01.8801558Z             },
2026-06-21T09:42:01.8801891Z             {
2026-06-21T09:42:01.8802240Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:42:01.8802573Z               "line": 343
2026-06-21T09:42:01.8802808Z             },
2026-06-21T09:42:01.8803030Z             {
2026-06-21T09:42:01.8803382Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:42:01.8803626Z               "line": 364
2026-06-21T09:42:01.8803850Z             },
2026-06-21T09:42:01.8804079Z             {
2026-06-21T09:42:01.8804418Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:42:01.8804674Z               "line": 376
2026-06-21T09:42:01.8804899Z             },
2026-06-21T09:42:01.8805133Z             {
2026-06-21T09:42:01.8805481Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8805727Z               "line": 897
2026-06-21T09:42:01.8805962Z             },
2026-06-21T09:42:01.8806192Z             {
2026-06-21T09:42:01.8806530Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8806784Z               "line": 957
2026-06-21T09:42:01.8807018Z             },
2026-06-21T09:42:01.8807260Z             {
2026-06-21T09:42:01.8807609Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:42:01.8807861Z               "line": 338
2026-06-21T09:42:01.8808094Z             },
2026-06-21T09:42:01.8808324Z             {
2026-06-21T09:42:01.8808628Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.8808878Z               "line": 769
2026-06-21T09:42:01.8809188Z             },
2026-06-21T09:42:01.8809469Z             {
2026-06-21T09:42:01.8809765Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8810013Z               "line": 8836
2026-06-21T09:42:01.8810252Z             }
2026-06-21T09:42:01.8810481Z           ]
2026-06-21T09:42:01.8810705Z         }
2026-06-21T09:42:01.8810943Z       }
2026-06-21T09:42:01.8811175Z     },
2026-06-21T09:42:01.8811406Z     {
2026-06-21T09:42:01.8811659Z       "id": "REQ-SHELL-4",
2026-06-21T09:42:01.8817076Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-21T09:42:01.8817359Z       "requiredStages": [
2026-06-21T09:42:01.8817588Z         "doc",
2026-06-21T09:42:01.8817830Z         "impl",
2026-06-21T09:42:01.8818063Z         "unit",
2026-06-21T09:42:01.8818297Z         "int"
2026-06-21T09:42:01.8818528Z       ],
2026-06-21T09:42:01.8818765Z       "stages": {
2026-06-21T09:42:01.8819068Z         "doc": {
2026-06-21T09:42:01.8819338Z           "complete": true,
2026-06-21T09:42:01.8819596Z           "evidence": [
2026-06-21T09:42:01.8819830Z             {
2026-06-21T09:42:01.8820107Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.8820353Z               "line": 281
2026-06-21T09:42:01.8820578Z             },
2026-06-21T09:42:01.8820812Z             {
2026-06-21T09:42:01.8821489Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T09:42:01.8821740Z               "line": 88
2026-06-21T09:42:01.8821971Z             }
2026-06-21T09:42:01.8822210Z           ]
2026-06-21T09:42:01.8822439Z         },
2026-06-21T09:42:01.8822674Z         "impl": {
2026-06-21T09:42:01.8822930Z           "complete": true,
2026-06-21T09:42:01.8823187Z           "evidence": [
2026-06-21T09:42:01.8823421Z             {
2026-06-21T09:42:01.8823769Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.8824027Z               "line": 243
2026-06-21T09:42:01.8824252Z             },
2026-06-21T09:42:01.8824594Z             {
2026-06-21T09:42:01.8824952Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T09:42:01.8825299Z               "line": 61
2026-06-21T09:42:01.8825538Z             },
2026-06-21T09:42:01.8825766Z             {
2026-06-21T09:42:01.8826119Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8826372Z               "line": 218
2026-06-21T09:42:01.8826610Z             },
2026-06-21T09:42:01.8826842Z             {
2026-06-21T09:42:01.8827189Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8827441Z               "line": 245
2026-06-21T09:42:01.8827679Z             },
2026-06-21T09:42:01.8827899Z             {
2026-06-21T09:42:01.8828248Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.8828491Z               "line": 616
2026-06-21T09:42:01.8828720Z             },
2026-06-21T09:42:01.8829030Z             {
2026-06-21T09:42:01.8829383Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.8829638Z               "line": 1191
2026-06-21T09:42:01.8829865Z             },
2026-06-21T09:42:01.8830113Z             {
2026-06-21T09:42:01.8830452Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.8830705Z               "line": 1203
2026-06-21T09:42:01.8830938Z             },
2026-06-21T09:42:01.8831171Z             {
2026-06-21T09:42:01.8831510Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.8831752Z               "line": 1244
2026-06-21T09:42:01.8831988Z             },
2026-06-21T09:42:01.8832219Z             {
2026-06-21T09:42:01.8832574Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8832827Z               "line": 456
2026-06-21T09:42:01.8833070Z             },
2026-06-21T09:42:01.8833309Z             {
2026-06-21T09:42:01.8833643Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8833892Z               "line": 44
2026-06-21T09:42:01.8834129Z             },
2026-06-21T09:42:01.8834368Z             {
2026-06-21T09:42:01.8834721Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8834982Z               "line": 208
2026-06-21T09:42:01.8835216Z             },
2026-06-21T09:42:01.8835449Z             {
2026-06-21T09:42:01.8835807Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8836045Z               "line": 227
2026-06-21T09:42:01.8836288Z             },
2026-06-21T09:42:01.8836517Z             {
2026-06-21T09:42:01.8836865Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8837119Z               "line": 253
2026-06-21T09:42:01.8837355Z             },
2026-06-21T09:42:01.8837581Z             {
2026-06-21T09:42:01.8837934Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8838188Z               "line": 272
2026-06-21T09:42:01.8838417Z             },
2026-06-21T09:42:01.8838651Z             {
2026-06-21T09:42:01.8839065Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8839323Z               "line": 392
2026-06-21T09:42:01.8839590Z             },
2026-06-21T09:42:01.8839823Z             {
2026-06-21T09:42:01.8840170Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8840406Z               "line": 421
2026-06-21T09:42:01.8840641Z             },
2026-06-21T09:42:01.8840868Z             {
2026-06-21T09:42:01.8841213Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8841459Z               "line": 439
2026-06-21T09:42:01.8841684Z             },
2026-06-21T09:42:01.8841914Z             {
2026-06-21T09:42:01.8842266Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8842515Z               "line": 458
2026-06-21T09:42:01.8842750Z             },
2026-06-21T09:42:01.8842973Z             {
2026-06-21T09:42:01.8843321Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8843564Z               "line": 486
2026-06-21T09:42:01.8843936Z             },
2026-06-21T09:42:01.8844175Z             {
2026-06-21T09:42:01.8844527Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.8844865Z               "line": 624
2026-06-21T09:42:01.8845096Z             },
2026-06-21T09:42:01.8845324Z             {
2026-06-21T09:42:01.8845666Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.8845914Z               "line": 829
2026-06-21T09:42:01.8846153Z             },
2026-06-21T09:42:01.8846377Z             {
2026-06-21T09:42:01.8846720Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.8846963Z               "line": 435
2026-06-21T09:42:01.8847206Z             },
2026-06-21T09:42:01.8847425Z             {
2026-06-21T09:42:01.8847730Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.8847987Z               "line": 6574
2026-06-21T09:42:01.8848213Z             }
2026-06-21T09:42:01.8848452Z           ]
2026-06-21T09:42:01.8848686Z         },
2026-06-21T09:42:01.8848920Z         "int": {
2026-06-21T09:42:01.8849249Z           "complete": true,
2026-06-21T09:42:01.8849515Z           "evidence": [
2026-06-21T09:42:01.8849758Z             {
2026-06-21T09:42:01.8850092Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-21T09:42:01.8850344Z               "line": 18
2026-06-21T09:42:01.8850579Z             }
2026-06-21T09:42:01.8850816Z           ]
2026-06-21T09:42:01.8851042Z         },
2026-06-21T09:42:01.8851291Z         "unit": {
2026-06-21T09:42:01.8851548Z           "complete": true,
2026-06-21T09:42:01.8851796Z           "evidence": [
2026-06-21T09:42:01.8852039Z             {
2026-06-21T09:42:01.8852377Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.8852639Z               "line": 1479
2026-06-21T09:42:01.8852873Z             },
2026-06-21T09:42:01.8853108Z             {
2026-06-21T09:42:01.8853445Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.8853695Z               "line": 1508
2026-06-21T09:42:01.8853928Z             },
2026-06-21T09:42:01.8854158Z             {
2026-06-21T09:42:01.8854510Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8854758Z               "line": 504
2026-06-21T09:42:01.8855003Z             },
2026-06-21T09:42:01.8855231Z             {
2026-06-21T09:42:01.8855569Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8855826Z               "line": 514
2026-06-21T09:42:01.8856060Z             },
2026-06-21T09:42:01.8856298Z             {
2026-06-21T09:42:01.8856641Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8856894Z               "line": 531
2026-06-21T09:42:01.8857136Z             },
2026-06-21T09:42:01.8857361Z             {
2026-06-21T09:42:01.8857714Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8857952Z               "line": 543
2026-06-21T09:42:01.8858197Z             },
2026-06-21T09:42:01.8858437Z             {
2026-06-21T09:42:01.8858778Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:42:01.8859103Z               "line": 555
2026-06-21T09:42:01.8859336Z             },
2026-06-21T09:42:01.8859585Z             {
2026-06-21T09:42:01.8859923Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.8860171Z               "line": 1145
2026-06-21T09:42:01.8860410Z             },
2026-06-21T09:42:01.8860633Z             {
2026-06-21T09:42:01.8860943Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.8861191Z               "line": 776
2026-06-21T09:42:01.8861428Z             }
2026-06-21T09:42:01.8861660Z           ]
2026-06-21T09:42:01.8861889Z         }
2026-06-21T09:42:01.8862123Z       }
2026-06-21T09:42:01.8862347Z     },
2026-06-21T09:42:01.8862579Z     {
2026-06-21T09:42:01.8862833Z       "id": "REQ-SHELL-5",
2026-06-21T09:42:01.8866420Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-21T09:42:01.8866891Z       "requiredStages": [
2026-06-21T09:42:01.8867120Z         "doc",
2026-06-21T09:42:01.8867363Z         "impl",
2026-06-21T09:42:01.8867593Z         "unit",
2026-06-21T09:42:01.8867822Z         "int"
2026-06-21T09:42:01.8868045Z       ],
2026-06-21T09:42:01.8868278Z       "stages": {
2026-06-21T09:42:01.8868512Z         "doc": {
2026-06-21T09:42:01.8868771Z           "complete": true,
2026-06-21T09:42:01.8869093Z           "evidence": [
2026-06-21T09:42:01.8869328Z             {
2026-06-21T09:42:01.8869605Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.8869839Z               "line": 284
2026-06-21T09:42:01.8870083Z             }
2026-06-21T09:42:01.8870312Z           ]
2026-06-21T09:42:01.8870544Z         },
2026-06-21T09:42:01.8870788Z         "impl": {
2026-06-21T09:42:01.8871046Z           "complete": true,
2026-06-21T09:42:01.8871295Z           "evidence": [
2026-06-21T09:42:01.8871532Z             {
2026-06-21T09:42:01.8871893Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:42:01.8872144Z               "line": 260
2026-06-21T09:42:01.8872368Z             }
2026-06-21T09:42:01.8872607Z           ]
2026-06-21T09:42:01.8872849Z         },
2026-06-21T09:42:01.8873083Z         "int": {
2026-06-21T09:42:01.8873331Z           "complete": true,
2026-06-21T09:42:01.8873584Z           "evidence": [
2026-06-21T09:42:01.8873823Z             {
2026-06-21T09:42:01.8874171Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.8874421Z               "line": 827
2026-06-21T09:42:01.8874653Z             },
2026-06-21T09:42:01.8874893Z             {
2026-06-21T09:42:01.8875231Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.8875488Z               "line": 1290
2026-06-21T09:42:01.8875726Z             },
2026-06-21T09:42:01.8875960Z             {
2026-06-21T09:42:01.8876370Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-21T09:42:01.8876599Z               "line": 23
2026-06-21T09:42:01.8876833Z             }
2026-06-21T09:42:01.8877063Z           ]
2026-06-21T09:42:01.8877298Z         },
2026-06-21T09:42:01.8877537Z         "unit": {
2026-06-21T09:42:01.8877785Z           "complete": true,
2026-06-21T09:42:01.8878029Z           "evidence": [
2026-06-21T09:42:01.8878261Z             {
2026-06-21T09:42:01.8878605Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:42:01.8878839Z               "line": 803
2026-06-21T09:42:01.8879124Z             }
2026-06-21T09:42:01.8879360Z           ]
2026-06-21T09:42:01.8879586Z         }
2026-06-21T09:42:01.8879818Z       }
2026-06-21T09:42:01.8880038Z     },
2026-06-21T09:42:01.8880266Z     {
2026-06-21T09:42:01.8880523Z       "id": "REQ-START-1",
2026-06-21T09:42:01.8881109Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-21T09:42:01.8881382Z       "requiredStages": [
2026-06-21T09:42:01.8881616Z         "impl",
2026-06-21T09:42:01.8881845Z         "unit"
2026-06-21T09:42:01.8882078Z       ],
2026-06-21T09:42:01.8882320Z       "stages": {
2026-06-21T09:42:01.8882558Z         "doc": {
2026-06-21T09:42:01.8882823Z           "complete": false,
2026-06-21T09:42:01.8883080Z           "evidence": []
2026-06-21T09:42:01.8883304Z         },
2026-06-21T09:42:01.8883543Z         "impl": {
2026-06-21T09:42:01.8883802Z           "complete": true,
2026-06-21T09:42:01.8884043Z           "evidence": [
2026-06-21T09:42:01.8884282Z             {
2026-06-21T09:42:01.8884611Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T09:42:01.8884850Z               "line": 16
2026-06-21T09:42:01.8885082Z             }
2026-06-21T09:42:01.8885318Z           ]
2026-06-21T09:42:01.8885657Z         },
2026-06-21T09:42:01.8885895Z         "int": {
2026-06-21T09:42:01.8886153Z           "complete": false,
2026-06-21T09:42:01.8886506Z           "evidence": []
2026-06-21T09:42:01.8886730Z         },
2026-06-21T09:42:01.8886954Z         "unit": {
2026-06-21T09:42:01.8887211Z           "complete": true,
2026-06-21T09:42:01.8887454Z           "evidence": [
2026-06-21T09:42:01.8887694Z             {
2026-06-21T09:42:01.8888008Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T09:42:01.8888250Z               "line": 48
2026-06-21T09:42:01.8888483Z             },
2026-06-21T09:42:01.8888713Z             {
2026-06-21T09:42:01.8889122Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T09:42:01.8889365Z               "line": 63
2026-06-21T09:42:01.8889605Z             }
2026-06-21T09:42:01.8889833Z           ]
2026-06-21T09:42:01.8890065Z         }
2026-06-21T09:42:01.8890298Z       }
2026-06-21T09:42:01.8890521Z     },
2026-06-21T09:42:01.8890759Z     {
2026-06-21T09:42:01.8891016Z       "id": "REQ-START-2",
2026-06-21T09:42:01.8891422Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-21T09:42:01.8891679Z       "requiredStages": [
2026-06-21T09:42:01.8891918Z         "impl",
2026-06-21T09:42:01.8892158Z         "unit",
2026-06-21T09:42:01.8892391Z         "int"
2026-06-21T09:42:01.8892619Z       ],
2026-06-21T09:42:01.8892852Z       "stages": {
2026-06-21T09:42:01.8893095Z         "doc": {
2026-06-21T09:42:01.8893335Z           "complete": false,
2026-06-21T09:42:01.8897361Z           "evidence": []
2026-06-21T09:42:01.8897624Z         },
2026-06-21T09:42:01.8897868Z         "impl": {
2026-06-21T09:42:01.8898130Z           "complete": true,
2026-06-21T09:42:01.8898371Z           "evidence": [
2026-06-21T09:42:01.8898601Z             {
2026-06-21T09:42:01.8898934Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8899258Z               "line": 16
2026-06-21T09:42:01.8899502Z             },
2026-06-21T09:42:01.8899735Z             {
2026-06-21T09:42:01.8900084Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8900330Z               "line": 115
2026-06-21T09:42:01.8900574Z             },
2026-06-21T09:42:01.8900797Z             {
2026-06-21T09:42:01.8901125Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8901382Z               "line": 300
2026-06-21T09:42:01.8901610Z             }
2026-06-21T09:42:01.8901844Z           ]
2026-06-21T09:42:01.8902078Z         },
2026-06-21T09:42:01.8902316Z         "int": {
2026-06-21T09:42:01.8902568Z           "complete": true,
2026-06-21T09:42:01.8902821Z           "evidence": [
2026-06-21T09:42:01.8903051Z             {
2026-06-21T09:42:01.8903399Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:42:01.8903645Z               "line": 186
2026-06-21T09:42:01.8903871Z             }
2026-06-21T09:42:01.8904096Z           ]
2026-06-21T09:42:01.8904325Z         },
2026-06-21T09:42:01.8904559Z         "unit": {
2026-06-21T09:42:01.8904825Z           "complete": true,
2026-06-21T09:42:01.8905069Z           "evidence": [
2026-06-21T09:42:01.8905293Z             {
2026-06-21T09:42:01.8905632Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8905885Z               "line": 590
2026-06-21T09:42:01.8906116Z             },
2026-06-21T09:42:01.8906353Z             {
2026-06-21T09:42:01.8906677Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8906925Z               "line": 623
2026-06-21T09:42:01.8907164Z             }
2026-06-21T09:42:01.8907387Z           ]
2026-06-21T09:42:01.8907621Z         }
2026-06-21T09:42:01.8907855Z       }
2026-06-21T09:42:01.8908084Z     },
2026-06-21T09:42:01.8908322Z     {
2026-06-21T09:42:01.8908569Z       "id": "REQ-START-3",
2026-06-21T09:42:01.8909166Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-21T09:42:01.8909437Z       "requiredStages": [
2026-06-21T09:42:01.8909685Z         "impl",
2026-06-21T09:42:01.8910057Z         "unit",
2026-06-21T09:42:01.8910300Z         "int"
2026-06-21T09:42:01.8910529Z       ],
2026-06-21T09:42:01.8910763Z       "stages": {
2026-06-21T09:42:01.8911100Z         "doc": {
2026-06-21T09:42:01.8911357Z           "complete": false,
2026-06-21T09:42:01.8911613Z           "evidence": []
2026-06-21T09:42:01.8911850Z         },
2026-06-21T09:42:01.8912089Z         "impl": {
2026-06-21T09:42:01.8912347Z           "complete": true,
2026-06-21T09:42:01.8912586Z           "evidence": [
2026-06-21T09:42:01.8912823Z             {
2026-06-21T09:42:01.8913162Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:42:01.8913406Z               "line": 23
2026-06-21T09:42:01.8913635Z             },
2026-06-21T09:42:01.8913865Z             {
2026-06-21T09:42:01.8914210Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:42:01.8914460Z               "line": 205
2026-06-21T09:42:01.8914694Z             },
2026-06-21T09:42:01.8914923Z             {
2026-06-21T09:42:01.8915277Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:42:01.8915520Z               "line": 221
2026-06-21T09:42:01.8915763Z             },
2026-06-21T09:42:01.8916000Z             {
2026-06-21T09:42:01.8916330Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8916577Z               "line": 17
2026-06-21T09:42:01.8916810Z             },
2026-06-21T09:42:01.8917047Z             {
2026-06-21T09:42:01.8917375Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8917628Z               "line": 35
2026-06-21T09:42:01.8917866Z             },
2026-06-21T09:42:01.8918096Z             {
2026-06-21T09:42:01.8918425Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8918673Z               "line": 116
2026-06-21T09:42:01.8918911Z             }
2026-06-21T09:42:01.8919211Z           ]
2026-06-21T09:42:01.8919444Z         },
2026-06-21T09:42:01.8919683Z         "int": {
2026-06-21T09:42:01.8919935Z           "complete": true,
2026-06-21T09:42:01.8920182Z           "evidence": [
2026-06-21T09:42:01.8920398Z             {
2026-06-21T09:42:01.8920741Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:42:01.8920984Z               "line": 488
2026-06-21T09:42:01.8921219Z             }
2026-06-21T09:42:01.8921461Z           ]
2026-06-21T09:42:01.8921684Z         },
2026-06-21T09:42:01.8921917Z         "unit": {
2026-06-21T09:42:01.8922173Z           "complete": true,
2026-06-21T09:42:01.8922425Z           "evidence": [
2026-06-21T09:42:01.8922649Z             {
2026-06-21T09:42:01.8922992Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:42:01.8923246Z               "line": 381
2026-06-21T09:42:01.8923480Z             },
2026-06-21T09:42:01.8923707Z             {
2026-06-21T09:42:01.8924052Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:42:01.8924304Z               "line": 402
2026-06-21T09:42:01.8924528Z             },
2026-06-21T09:42:01.8924766Z             {
2026-06-21T09:42:01.8925117Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:42:01.8925364Z               "line": 412
2026-06-21T09:42:01.8925606Z             },
2026-06-21T09:42:01.8925837Z             {
2026-06-21T09:42:01.8926155Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8926390Z               "line": 591
2026-06-21T09:42:01.8926618Z             },
2026-06-21T09:42:01.8926857Z             {
2026-06-21T09:42:01.8927170Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8927426Z               "line": 624
2026-06-21T09:42:01.8927649Z             },
2026-06-21T09:42:01.8927883Z             {
2026-06-21T09:42:01.8928202Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8928436Z               "line": 657
2026-06-21T09:42:01.8928665Z             }
2026-06-21T09:42:01.8928895Z           ]
2026-06-21T09:42:01.8929205Z         }
2026-06-21T09:42:01.8929442Z       }
2026-06-21T09:42:01.8929671Z     },
2026-06-21T09:42:01.8930023Z     {
2026-06-21T09:42:01.8930287Z       "id": "REQ-START-4",
2026-06-21T09:42:01.8930685Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-21T09:42:01.8931019Z       "requiredStages": [
2026-06-21T09:42:01.8931263Z         "impl",
2026-06-21T09:42:01.8931498Z         "unit"
2026-06-21T09:42:01.8931730Z       ],
2026-06-21T09:42:01.8931968Z       "stages": {
2026-06-21T09:42:01.8932206Z         "doc": {
2026-06-21T09:42:01.8932473Z           "complete": false,
2026-06-21T09:42:01.8932709Z           "evidence": []
2026-06-21T09:42:01.8932938Z         },
2026-06-21T09:42:01.8933172Z         "impl": {
2026-06-21T09:42:01.8933434Z           "complete": true,
2026-06-21T09:42:01.8933672Z           "evidence": [
2026-06-21T09:42:01.8933901Z             {
2026-06-21T09:42:01.8934240Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.8934487Z               "line": 585
2026-06-21T09:42:01.8934712Z             }
2026-06-21T09:42:01.8934937Z           ]
2026-06-21T09:42:01.8935169Z         },
2026-06-21T09:42:01.8935410Z         "int": {
2026-06-21T09:42:01.8935672Z           "complete": false,
2026-06-21T09:42:01.8935914Z           "evidence": []
2026-06-21T09:42:01.8936143Z         },
2026-06-21T09:42:01.8936373Z         "unit": {
2026-06-21T09:42:01.8936621Z           "complete": true,
2026-06-21T09:42:01.8936873Z           "evidence": [
2026-06-21T09:42:01.8937102Z             {
2026-06-21T09:42:01.8937450Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.8937702Z               "line": 1026
2026-06-21T09:42:01.8937926Z             }
2026-06-21T09:42:01.8938167Z           ]
2026-06-21T09:42:01.8938390Z         }
2026-06-21T09:42:01.8938625Z       }
2026-06-21T09:42:01.8938849Z     },
2026-06-21T09:42:01.8939150Z     {
2026-06-21T09:42:01.8939416Z       "id": "REQ-START-5",
2026-06-21T09:42:01.8947924Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-21T09:42:01.8948229Z       "requiredStages": [
2026-06-21T09:42:01.8948466Z         "doc",
2026-06-21T09:42:01.8948698Z         "impl",
2026-06-21T09:42:01.8948937Z         "unit",
2026-06-21T09:42:01.8949261Z         "int"
2026-06-21T09:42:01.8949514Z       ],
2026-06-21T09:42:01.8949743Z       "stages": {
2026-06-21T09:42:01.8949986Z         "doc": {
2026-06-21T09:42:01.8950243Z           "complete": true,
2026-06-21T09:42:01.8950495Z           "evidence": [
2026-06-21T09:42:01.8950726Z             {
2026-06-21T09:42:01.8950993Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.8951243Z               "line": 176
2026-06-21T09:42:01.8951482Z             },
2026-06-21T09:42:01.8951711Z             {
2026-06-21T09:42:01.8952093Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-21T09:42:01.8952341Z               "line": 28
2026-06-21T09:42:01.8952579Z             }
2026-06-21T09:42:01.8952797Z           ]
2026-06-21T09:42:01.8953022Z         },
2026-06-21T09:42:01.8953267Z         "impl": {
2026-06-21T09:42:01.8953522Z           "complete": true,
2026-06-21T09:42:01.8953758Z           "evidence": [
2026-06-21T09:42:01.8953992Z             {
2026-06-21T09:42:01.8954458Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.8954701Z               "line": 26
2026-06-21T09:42:01.8955030Z             },
2026-06-21T09:42:01.8955269Z             {
2026-06-21T09:42:01.8955622Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.8955875Z               "line": 212
2026-06-21T09:42:01.8956110Z             },
2026-06-21T09:42:01.8956340Z             {
2026-06-21T09:42:01.8956691Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.8956934Z               "line": 221
2026-06-21T09:42:01.8957174Z             },
2026-06-21T09:42:01.8957403Z             {
2026-06-21T09:42:01.8957718Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.8957969Z               "line": 485
2026-06-21T09:42:01.8958203Z             },
2026-06-21T09:42:01.8958437Z             {
2026-06-21T09:42:01.8958771Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8959092Z               "line": 36
2026-06-21T09:42:01.8959326Z             },
2026-06-21T09:42:01.8959548Z             {
2026-06-21T09:42:01.8959868Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8960121Z               "line": 118
2026-06-21T09:42:01.8960355Z             },
2026-06-21T09:42:01.8960570Z             {
2026-06-21T09:42:01.8960900Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:42:01.8961137Z               "line": 329
2026-06-21T09:42:01.8961375Z             }
2026-06-21T09:42:01.8961591Z           ]
2026-06-21T09:42:01.8961822Z         },
2026-06-21T09:42:01.8962056Z         "int": {
2026-06-21T09:42:01.8962310Z           "complete": true,
2026-06-21T09:42:01.8962563Z           "evidence": [
2026-06-21T09:42:01.8962800Z             {
2026-06-21T09:42:01.8963163Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T09:42:01.8963406Z               "line": 17
2026-06-21T09:42:01.8963639Z             }
2026-06-21T09:42:01.8963874Z           ]
2026-06-21T09:42:01.8964106Z         },
2026-06-21T09:42:01.8964341Z         "unit": {
2026-06-21T09:42:01.8964590Z           "complete": true,
2026-06-21T09:42:01.8964847Z           "evidence": [
2026-06-21T09:42:01.8965082Z             {
2026-06-21T09:42:01.8965425Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.8965677Z               "line": 358
2026-06-21T09:42:01.8965910Z             },
2026-06-21T09:42:01.8966144Z             {
2026-06-21T09:42:01.8966496Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:42:01.8966746Z               "line": 371
2026-06-21T09:42:01.8966982Z             },
2026-06-21T09:42:01.8967223Z             {
2026-06-21T09:42:01.8967533Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:42:01.8967786Z               "line": 597
2026-06-21T09:42:01.8968020Z             }
2026-06-21T09:42:01.8968249Z           ]
2026-06-21T09:42:01.8968482Z         }
2026-06-21T09:42:01.8968715Z       }
2026-06-21T09:42:01.8969020Z     },
2026-06-21T09:42:01.8969270Z     {
2026-06-21T09:42:01.8969529Z       "id": "REQ-STORE-1",
2026-06-21T09:42:01.8972354Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-21T09:42:01.8972616Z       "requiredStages": [
2026-06-21T09:42:01.8972860Z         "impl",
2026-06-21T09:42:01.8973099Z         "unit"
2026-06-21T09:42:01.8973317Z       ],
2026-06-21T09:42:01.8973565Z       "stages": {
2026-06-21T09:42:01.8973790Z         "doc": {
2026-06-21T09:42:01.8974057Z           "complete": false,
2026-06-21T09:42:01.8974305Z           "evidence": []
2026-06-21T09:42:01.8974532Z         },
2026-06-21T09:42:01.8974770Z         "impl": {
2026-06-21T09:42:01.8975031Z           "complete": true,
2026-06-21T09:42:01.8975278Z           "evidence": [
2026-06-21T09:42:01.8975618Z             {
2026-06-21T09:42:01.8975980Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.8976314Z               "line": 23
2026-06-21T09:42:01.8976552Z             },
2026-06-21T09:42:01.8976781Z             {
2026-06-21T09:42:01.8977128Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.8977376Z               "line": 46
2026-06-21T09:42:01.8977609Z             },
2026-06-21T09:42:01.8977850Z             {
2026-06-21T09:42:01.8978204Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.8978455Z               "line": 97
2026-06-21T09:42:01.8978689Z             },
2026-06-21T09:42:01.8978923Z             {
2026-06-21T09:42:01.8979371Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.8979628Z               "line": 125
2026-06-21T09:42:01.8979868Z             },
2026-06-21T09:42:01.8980104Z             {
2026-06-21T09:42:01.8980465Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.8980717Z               "line": 207
2026-06-21T09:42:01.8980946Z             },
2026-06-21T09:42:01.8981185Z             {
2026-06-21T09:42:01.8981542Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.8981790Z               "line": 231
2026-06-21T09:42:01.8982025Z             },
2026-06-21T09:42:01.8982258Z             {
2026-06-21T09:42:01.8982606Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.8982848Z               "line": 467
2026-06-21T09:42:01.8983082Z             },
2026-06-21T09:42:01.8983306Z             {
2026-06-21T09:42:01.8983668Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.8983916Z               "line": 25
2026-06-21T09:42:01.8984135Z             },
2026-06-21T09:42:01.8984369Z             {
2026-06-21T09:42:01.8984736Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.8984984Z               "line": 120
2026-06-21T09:42:01.8985221Z             },
2026-06-21T09:42:01.8985457Z             {
2026-06-21T09:42:01.8985824Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.8986077Z               "line": 148
2026-06-21T09:42:01.8986306Z             },
2026-06-21T09:42:01.8986540Z             {
2026-06-21T09:42:01.8986902Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.8987151Z               "line": 165
2026-06-21T09:42:01.8987373Z             },
2026-06-21T09:42:01.8987617Z             {
2026-06-21T09:42:01.8987983Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.8988230Z               "line": 180
2026-06-21T09:42:01.8988458Z             },
2026-06-21T09:42:01.8988691Z             {
2026-06-21T09:42:01.8989107Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.8989359Z               "line": 198
2026-06-21T09:42:01.8989602Z             },
2026-06-21T09:42:01.8989826Z             {
2026-06-21T09:42:01.8990198Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.8990447Z               "line": 207
2026-06-21T09:42:01.8990679Z             },
2026-06-21T09:42:01.8990914Z             {
2026-06-21T09:42:01.8991243Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T09:42:01.8991496Z               "line": 16
2026-06-21T09:42:01.8991716Z             },
2026-06-21T09:42:01.8991955Z             {
2026-06-21T09:42:01.8992299Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T09:42:01.8992551Z               "line": 63
2026-06-21T09:42:01.8992793Z             }
2026-06-21T09:42:01.8993017Z           ]
2026-06-21T09:42:01.8993248Z         },
2026-06-21T09:42:01.8993474Z         "int": {
2026-06-21T09:42:01.8993741Z           "complete": false,
2026-06-21T09:42:01.8993990Z           "evidence": []
2026-06-21T09:42:01.8994219Z         },
2026-06-21T09:42:01.8994457Z         "unit": {
2026-06-21T09:42:01.8994709Z           "complete": true,
2026-06-21T09:42:01.8995072Z           "evidence": [
2026-06-21T09:42:01.8995310Z             {
2026-06-21T09:42:01.8995676Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.8996036Z               "line": 584
2026-06-21T09:42:01.8996265Z             },
2026-06-21T09:42:01.8996505Z             {
2026-06-21T09:42:01.8996857Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.8997105Z               "line": 594
2026-06-21T09:42:01.8997343Z             },
2026-06-21T09:42:01.8997572Z             {
2026-06-21T09:42:01.8997910Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.8998158Z               "line": 616
2026-06-21T09:42:01.8998388Z             },
2026-06-21T09:42:01.8998615Z             {
2026-06-21T09:42:01.8999028Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.8999275Z               "line": 632
2026-06-21T09:42:01.8999509Z             },
2026-06-21T09:42:01.8999738Z             {
2026-06-21T09:42:01.9000101Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:42:01.9000349Z               "line": 690
2026-06-21T09:42:01.9000588Z             },
2026-06-21T09:42:01.9000825Z             {
2026-06-21T09:42:01.9001191Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.9001441Z               "line": 472
2026-06-21T09:42:01.9001681Z             },
2026-06-21T09:42:01.9001915Z             {
2026-06-21T09:42:01.9002281Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:42:01.9002525Z               "line": 507
2026-06-21T09:42:01.9002767Z             },
2026-06-21T09:42:01.9002997Z             {
2026-06-21T09:42:01.9003349Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T09:42:01.9003596Z               "line": 120
2026-06-21T09:42:01.9003837Z             },
2026-06-21T09:42:01.9004073Z             {
2026-06-21T09:42:01.9004407Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T09:42:01.9004659Z               "line": 128
2026-06-21T09:42:01.9004889Z             }
2026-06-21T09:42:01.9005127Z           ]
2026-06-21T09:42:01.9005351Z         }
2026-06-21T09:42:01.9005584Z       }
2026-06-21T09:42:01.9005818Z     },
2026-06-21T09:42:01.9006053Z     {
2026-06-21T09:42:01.9006308Z       "id": "REQ-SUBNET-1",
2026-06-21T09:42:01.9007313Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-21T09:42:01.9007584Z       "requiredStages": [
2026-06-21T09:42:01.9007826Z         "impl",
2026-06-21T09:42:01.9008051Z         "unit"
2026-06-21T09:42:01.9008295Z       ],
2026-06-21T09:42:01.9008518Z       "stages": {
2026-06-21T09:42:01.9008761Z         "doc": {
2026-06-21T09:42:01.9009080Z           "complete": false,
2026-06-21T09:42:01.9009340Z           "evidence": []
2026-06-21T09:42:01.9009574Z         },
2026-06-21T09:42:01.9009821Z         "impl": {
2026-06-21T09:42:01.9010079Z           "complete": true,
2026-06-21T09:42:01.9010332Z           "evidence": [
2026-06-21T09:42:01.9010571Z             {
2026-06-21T09:42:01.9010937Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9011195Z               "line": 281
2026-06-21T09:42:01.9011434Z             },
2026-06-21T09:42:01.9011661Z             {
2026-06-21T09:42:01.9012035Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9012283Z               "line": 651
2026-06-21T09:42:01.9012526Z             },
2026-06-21T09:42:01.9012756Z             {
2026-06-21T09:42:01.9013061Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9013313Z               "line": 3399
2026-06-21T09:42:01.9013547Z             },
2026-06-21T09:42:01.9013772Z             {
2026-06-21T09:42:01.9014058Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9014301Z               "line": 3709
2026-06-21T09:42:01.9014533Z             },
2026-06-21T09:42:01.9014763Z             {
2026-06-21T09:42:01.9015238Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9015482Z               "line": 3728
2026-06-21T09:42:01.9015810Z             },
2026-06-21T09:42:01.9016044Z             {
2026-06-21T09:42:01.9016350Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9016589Z               "line": 3792
2026-06-21T09:42:01.9016820Z             },
2026-06-21T09:42:01.9017056Z             {
2026-06-21T09:42:01.9017339Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9017601Z               "line": 3834
2026-06-21T09:42:01.9017829Z             },
2026-06-21T09:42:01.9018067Z             {
2026-06-21T09:42:01.9018358Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9018611Z               "line": 4023
2026-06-21T09:42:01.9018836Z             },
2026-06-21T09:42:01.9019146Z             {
2026-06-21T09:42:01.9019442Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9019696Z               "line": 4093
2026-06-21T09:42:01.9019928Z             },
2026-06-21T09:42:01.9020158Z             {
2026-06-21T09:42:01.9020454Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9020701Z               "line": 4317
2026-06-21T09:42:01.9020934Z             },
2026-06-21T09:42:01.9021163Z             {
2026-06-21T09:42:01.9021450Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9021694Z               "line": 4961
2026-06-21T09:42:01.9021927Z             },
2026-06-21T09:42:01.9022164Z             {
2026-06-21T09:42:01.9022486Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.9022749Z               "line": 418
2026-06-21T09:42:01.9022987Z             }
2026-06-21T09:42:01.9023210Z           ]
2026-06-21T09:42:01.9023435Z         },
2026-06-21T09:42:01.9023664Z         "int": {
2026-06-21T09:42:01.9023926Z           "complete": false,
2026-06-21T09:42:01.9024173Z           "evidence": []
2026-06-21T09:42:01.9024412Z         },
2026-06-21T09:42:01.9024651Z         "unit": {
2026-06-21T09:42:01.9024900Z           "complete": true,
2026-06-21T09:42:01.9025155Z           "evidence": [
2026-06-21T09:42:01.9025384Z             {
2026-06-21T09:42:01.9025765Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9026005Z               "line": 1584
2026-06-21T09:42:01.9026229Z             },
2026-06-21T09:42:01.9026466Z             {
2026-06-21T09:42:01.9026757Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9027010Z               "line": 9964
2026-06-21T09:42:01.9027235Z             },
2026-06-21T09:42:01.9027471Z             {
2026-06-21T09:42:01.9027774Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9028022Z               "line": 10134
2026-06-21T09:42:01.9028251Z             },
2026-06-21T09:42:01.9028476Z             {
2026-06-21T09:42:01.9028776Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9029091Z               "line": 10141
2026-06-21T09:42:01.9029333Z             },
2026-06-21T09:42:01.9029576Z             {
2026-06-21T09:42:01.9029872Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9030116Z               "line": 10194
2026-06-21T09:42:01.9030357Z             },
2026-06-21T09:42:01.9030597Z             {
2026-06-21T09:42:01.9030889Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9031146Z               "line": 10211
2026-06-21T09:42:01.9031380Z             },
2026-06-21T09:42:01.9031609Z             {
2026-06-21T09:42:01.9031910Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9032157Z               "line": 10241
2026-06-21T09:42:01.9032395Z             },
2026-06-21T09:42:01.9032626Z             {
2026-06-21T09:42:01.9032929Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9033174Z               "line": 10357
2026-06-21T09:42:01.9033408Z             },
2026-06-21T09:42:01.9033642Z             {
2026-06-21T09:42:01.9033933Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9034182Z               "line": 10508
2026-06-21T09:42:01.9034530Z             }
2026-06-21T09:42:01.9034767Z           ]
2026-06-21T09:42:01.9035006Z         }
2026-06-21T09:42:01.9035235Z       }
2026-06-21T09:42:01.9035554Z     },
2026-06-21T09:42:01.9035782Z     {
2026-06-21T09:42:01.9036049Z       "id": "REQ-SUBNET-2",
2026-06-21T09:42:01.9036779Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-21T09:42:01.9037046Z       "requiredStages": [
2026-06-21T09:42:01.9037293Z         "impl",
2026-06-21T09:42:01.9037522Z         "unit",
2026-06-21T09:42:01.9037748Z         "int"
2026-06-21T09:42:01.9037974Z       ],
2026-06-21T09:42:01.9038215Z       "stages": {
2026-06-21T09:42:01.9038450Z         "doc": {
2026-06-21T09:42:01.9038702Z           "complete": true,
2026-06-21T09:42:01.9039017Z           "evidence": [
2026-06-21T09:42:01.9039235Z             {
2026-06-21T09:42:01.9039703Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T09:42:01.9039942Z               "line": 60
2026-06-21T09:42:01.9040184Z             }
2026-06-21T09:42:01.9040422Z           ]
2026-06-21T09:42:01.9040644Z         },
2026-06-21T09:42:01.9040894Z         "impl": {
2026-06-21T09:42:01.9041134Z           "complete": true,
2026-06-21T09:42:01.9041383Z           "evidence": [
2026-06-21T09:42:01.9041617Z             {
2026-06-21T09:42:01.9041960Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.9042204Z               "line": 886
2026-06-21T09:42:01.9042432Z             },
2026-06-21T09:42:01.9042670Z             {
2026-06-21T09:42:01.9043004Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.9043261Z               "line": 2122
2026-06-21T09:42:01.9043494Z             },
2026-06-21T09:42:01.9043729Z             {
2026-06-21T09:42:01.9044073Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.9044321Z               "line": 683
2026-06-21T09:42:01.9044555Z             },
2026-06-21T09:42:01.9044775Z             {
2026-06-21T09:42:01.9045132Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:42:01.9045381Z               "line": 867
2026-06-21T09:42:01.9045623Z             },
2026-06-21T09:42:01.9045856Z             {
2026-06-21T09:42:01.9046209Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.9046462Z               "line": 26
2026-06-21T09:42:01.9046691Z             },
2026-06-21T09:42:01.9046928Z             {
2026-06-21T09:42:01.9047272Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.9047524Z               "line": 60
2026-06-21T09:42:01.9047758Z             },
2026-06-21T09:42:01.9047988Z             {
2026-06-21T09:42:01.9048336Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.9048577Z               "line": 168
2026-06-21T09:42:01.9048822Z             },
2026-06-21T09:42:01.9049118Z             {
2026-06-21T09:42:01.9049519Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.9049790Z               "line": 295
2026-06-21T09:42:01.9050062Z             },
2026-06-21T09:42:01.9050292Z             {
2026-06-21T09:42:01.9050635Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.9050879Z               "line": 417
2026-06-21T09:42:01.9051117Z             },
2026-06-21T09:42:01.9051344Z             {
2026-06-21T09:42:01.9051718Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:42:01.9051966Z               "line": 252
2026-06-21T09:42:01.9052200Z             },
2026-06-21T09:42:01.9052435Z             {
2026-06-21T09:42:01.9052730Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9052968Z               "line": 3755
2026-06-21T09:42:01.9053210Z             },
2026-06-21T09:42:01.9053436Z             {
2026-06-21T09:42:01.9053727Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9053977Z               "line": 4256
2026-06-21T09:42:01.9054209Z             },
2026-06-21T09:42:01.9054444Z             {
2026-06-21T09:42:01.9054843Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9055096Z               "line": 4892
2026-06-21T09:42:01.9055434Z             }
2026-06-21T09:42:01.9055660Z           ]
2026-06-21T09:42:01.9055897Z         },
2026-06-21T09:42:01.9056131Z         "int": {
2026-06-21T09:42:01.9056387Z           "complete": true,
2026-06-21T09:42:01.9056633Z           "evidence": [
2026-06-21T09:42:01.9056878Z             {
2026-06-21T09:42:01.9057246Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-21T09:42:01.9057513Z               "line": 22
2026-06-21T09:42:01.9057751Z             },
2026-06-21T09:42:01.9057985Z             {
2026-06-21T09:42:01.9058337Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.9058591Z               "line": 645
2026-06-21T09:42:01.9058820Z             },
2026-06-21T09:42:01.9059137Z             {
2026-06-21T09:42:01.9059502Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.9059755Z               "line": 887
2026-06-21T09:42:01.9059993Z             }
2026-06-21T09:42:01.9060227Z           ]
2026-06-21T09:42:01.9060456Z         },
2026-06-21T09:42:01.9060690Z         "unit": {
2026-06-21T09:42:01.9060952Z           "complete": true,
2026-06-21T09:42:01.9061186Z           "evidence": [
2026-06-21T09:42:01.9061415Z             {
2026-06-21T09:42:01.9061759Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.9062009Z               "line": 586
2026-06-21T09:42:01.9062245Z             },
2026-06-21T09:42:01.9062466Z             {
2026-06-21T09:42:01.9062756Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9062999Z               "line": 10004
2026-06-21T09:42:01.9063232Z             },
2026-06-21T09:42:01.9063462Z             {
2026-06-21T09:42:01.9063756Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9064001Z               "line": 10715
2026-06-21T09:42:01.9064230Z             }
2026-06-21T09:42:01.9064447Z           ]
2026-06-21T09:42:01.9064685Z         }
2026-06-21T09:42:01.9064912Z       }
2026-06-21T09:42:01.9065141Z     },
2026-06-21T09:42:01.9065371Z     {
2026-06-21T09:42:01.9065637Z       "id": "REQ-SUBNET-3",
2026-06-21T09:42:01.9066491Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-21T09:42:01.9066758Z       "requiredStages": [
2026-06-21T09:42:01.9066991Z         "impl",
2026-06-21T09:42:01.9067226Z         "unit"
2026-06-21T09:42:01.9067453Z       ],
2026-06-21T09:42:01.9067696Z       "stages": {
2026-06-21T09:42:01.9067934Z         "doc": {
2026-06-21T09:42:01.9068192Z           "complete": false,
2026-06-21T09:42:01.9068441Z           "evidence": []
2026-06-21T09:42:01.9068668Z         },
2026-06-21T09:42:01.9068907Z         "impl": {
2026-06-21T09:42:01.9069245Z           "complete": true,
2026-06-21T09:42:01.9069488Z           "evidence": [
2026-06-21T09:42:01.9069722Z             {
2026-06-21T09:42:01.9070097Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9070354Z               "line": 152
2026-06-21T09:42:01.9070586Z             },
2026-06-21T09:42:01.9070820Z             {
2026-06-21T09:42:01.9071192Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9071436Z               "line": 299
2026-06-21T09:42:01.9071680Z             },
2026-06-21T09:42:01.9071904Z             {
2026-06-21T09:42:01.9072281Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9072526Z               "line": 443
2026-06-21T09:42:01.9072753Z             },
2026-06-21T09:42:01.9072978Z             {
2026-06-21T09:42:01.9073355Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9073612Z               "line": 532
2026-06-21T09:42:01.9073835Z             },
2026-06-21T09:42:01.9074069Z             {
2026-06-21T09:42:01.9074412Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.9074664Z               "line": 125
2026-06-21T09:42:01.9075002Z             },
2026-06-21T09:42:01.9075245Z             {
2026-06-21T09:42:01.9075602Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.9075982Z               "line": 253
2026-06-21T09:42:01.9076226Z             },
2026-06-21T09:42:01.9076451Z             {
2026-06-21T09:42:01.9076804Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.9077052Z               "line": 264
2026-06-21T09:42:01.9077289Z             },
2026-06-21T09:42:01.9077522Z             {
2026-06-21T09:42:01.9077860Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.9078114Z               "line": 285
2026-06-21T09:42:01.9078347Z             },
2026-06-21T09:42:01.9078585Z             {
2026-06-21T09:42:01.9078928Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.9079252Z               "line": 621
2026-06-21T09:42:01.9079477Z             },
2026-06-21T09:42:01.9079701Z             {
2026-06-21T09:42:01.9083432Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.9083723Z               "line": 680
2026-06-21T09:42:01.9083971Z             },
2026-06-21T09:42:01.9084210Z             {
2026-06-21T09:42:01.9084577Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:42:01.9084835Z               "line": 61
2026-06-21T09:42:01.9085069Z             },
2026-06-21T09:42:01.9085301Z             {
2026-06-21T09:42:01.9085672Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:42:01.9085932Z               "line": 90
2026-06-21T09:42:01.9086171Z             },
2026-06-21T09:42:01.9086391Z             {
2026-06-21T09:42:01.9086763Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:42:01.9087011Z               "line": 125
2026-06-21T09:42:01.9087253Z             },
2026-06-21T09:42:01.9087483Z             {
2026-06-21T09:42:01.9087839Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T09:42:01.9088092Z               "line": 9
2026-06-21T09:42:01.9088318Z             },
2026-06-21T09:42:01.9088549Z             {
2026-06-21T09:42:01.9088849Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9089188Z               "line": 4093
2026-06-21T09:42:01.9089440Z             },
2026-06-21T09:42:01.9089669Z             {
2026-06-21T09:42:01.9089979Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.9090224Z               "line": 445
2026-06-21T09:42:01.9090452Z             }
2026-06-21T09:42:01.9090684Z           ]
2026-06-21T09:42:01.9090917Z         },
2026-06-21T09:42:01.9091144Z         "int": {
2026-06-21T09:42:01.9091411Z           "complete": false,
2026-06-21T09:42:01.9091654Z           "evidence": []
2026-06-21T09:42:01.9091884Z         },
2026-06-21T09:42:01.9092118Z         "unit": {
2026-06-21T09:42:01.9092379Z           "complete": true,
2026-06-21T09:42:01.9092618Z           "evidence": [
2026-06-21T09:42:01.9092837Z             {
2026-06-21T09:42:01.9093223Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9093472Z               "line": 1356
2026-06-21T09:42:01.9093709Z             },
2026-06-21T09:42:01.9093944Z             {
2026-06-21T09:42:01.9094322Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9094569Z               "line": 1713
2026-06-21T09:42:01.9094799Z             },
2026-06-21T09:42:01.9095033Z             {
2026-06-21T09:42:01.9095404Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:42:01.9095649Z               "line": 892
2026-06-21T09:42:01.9095886Z             },
2026-06-21T09:42:01.9096114Z             {
2026-06-21T09:42:01.9096468Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.9096713Z               "line": 991
2026-06-21T09:42:01.9096951Z             },
2026-06-21T09:42:01.9097189Z             {
2026-06-21T09:42:01.9097528Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.9097779Z               "line": 1041
2026-06-21T09:42:01.9098147Z             },
2026-06-21T09:42:01.9098381Z             {
2026-06-21T09:42:01.9098729Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.9099171Z               "line": 1100
2026-06-21T09:42:01.9099405Z             },
2026-06-21T09:42:01.9099657Z             {
2026-06-21T09:42:01.9100024Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:42:01.9100264Z               "line": 234
2026-06-21T09:42:01.9100503Z             },
2026-06-21T09:42:01.9100741Z             {
2026-06-21T09:42:01.9101085Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T09:42:01.9101325Z               "line": 49
2026-06-21T09:42:01.9101557Z             },
2026-06-21T09:42:01.9101791Z             {
2026-06-21T09:42:01.9102082Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9102330Z               "line": 10357
2026-06-21T09:42:01.9102562Z             },
2026-06-21T09:42:01.9102792Z             {
2026-06-21T09:42:01.9103101Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9103337Z               "line": 10463
2026-06-21T09:42:01.9103584Z             },
2026-06-21T09:42:01.9103822Z             {
2026-06-21T09:42:01.9104116Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9104373Z               "line": 10681
2026-06-21T09:42:01.9104596Z             }
2026-06-21T09:42:01.9104829Z           ]
2026-06-21T09:42:01.9105053Z         }
2026-06-21T09:42:01.9105283Z       }
2026-06-21T09:42:01.9105507Z     },
2026-06-21T09:42:01.9105735Z     {
2026-06-21T09:42:01.9105997Z       "id": "REQ-SUBNET-4",
2026-06-21T09:42:01.9106925Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-21T09:42:01.9107191Z       "requiredStages": [
2026-06-21T09:42:01.9107425Z         "impl",
2026-06-21T09:42:01.9107663Z         "unit"
2026-06-21T09:42:01.9107892Z       ],
2026-06-21T09:42:01.9108127Z       "stages": {
2026-06-21T09:42:01.9108373Z         "doc": {
2026-06-21T09:42:01.9108631Z           "complete": true,
2026-06-21T09:42:01.9108883Z           "evidence": [
2026-06-21T09:42:01.9109188Z             {
2026-06-21T09:42:01.9109679Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T09:42:01.9109926Z               "line": 60
2026-06-21T09:42:01.9110166Z             }
2026-06-21T09:42:01.9110405Z           ]
2026-06-21T09:42:01.9110628Z         },
2026-06-21T09:42:01.9110866Z         "impl": {
2026-06-21T09:42:01.9111123Z           "complete": true,
2026-06-21T09:42:01.9111377Z           "evidence": [
2026-06-21T09:42:01.9111601Z             {
2026-06-21T09:42:01.9111904Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9112150Z               "line": 3399
2026-06-21T09:42:01.9112385Z             },
2026-06-21T09:42:01.9112623Z             {
2026-06-21T09:42:01.9112924Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9113175Z               "line": 4859
2026-06-21T09:42:01.9113414Z             },
2026-06-21T09:42:01.9113648Z             {
2026-06-21T09:42:01.9113949Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9114202Z               "line": 4892
2026-06-21T09:42:01.9114435Z             }
2026-06-21T09:42:01.9114667Z           ]
2026-06-21T09:42:01.9114905Z         },
2026-06-21T09:42:01.9115142Z         "int": {
2026-06-21T09:42:01.9115408Z           "complete": false,
2026-06-21T09:42:01.9115656Z           "evidence": []
2026-06-21T09:42:01.9115881Z         },
2026-06-21T09:42:01.9116125Z         "unit": {
2026-06-21T09:42:01.9116381Z           "complete": true,
2026-06-21T09:42:01.9116638Z           "evidence": [
2026-06-21T09:42:01.9116872Z             {
2026-06-21T09:42:01.9117173Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9117425Z               "line": 10120
2026-06-21T09:42:01.9117655Z             },
2026-06-21T09:42:01.9117880Z             {
2026-06-21T09:42:01.9118180Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9118537Z               "line": 10194
2026-06-21T09:42:01.9118762Z             }
2026-06-21T09:42:01.9119163Z           ]
2026-06-21T09:42:01.9119396Z         }
2026-06-21T09:42:01.9119626Z       }
2026-06-21T09:42:01.9119854Z     },
2026-06-21T09:42:01.9120073Z     {
2026-06-21T09:42:01.9120335Z       "id": "REQ-SUBNET-5",
2026-06-21T09:42:01.9123683Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-21T09:42:01.9123950Z       "requiredStages": [
2026-06-21T09:42:01.9124194Z         "impl",
2026-06-21T09:42:01.9124419Z         "unit",
2026-06-21T09:42:01.9124651Z         "int"
2026-06-21T09:42:01.9124880Z       ],
2026-06-21T09:42:01.9125120Z       "stages": {
2026-06-21T09:42:01.9125370Z         "doc": {
2026-06-21T09:42:01.9125625Z           "complete": false,
2026-06-21T09:42:01.9125883Z           "evidence": []
2026-06-21T09:42:01.9126107Z         },
2026-06-21T09:42:01.9126346Z         "impl": {
2026-06-21T09:42:01.9126598Z           "complete": true,
2026-06-21T09:42:01.9126851Z           "evidence": [
2026-06-21T09:42:01.9127085Z             {
2026-06-21T09:42:01.9127427Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:42:01.9127677Z               "line": 128
2026-06-21T09:42:01.9127908Z             },
2026-06-21T09:42:01.9128130Z             {
2026-06-21T09:42:01.9128483Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:42:01.9128722Z               "line": 413
2026-06-21T09:42:01.9129037Z             },
2026-06-21T09:42:01.9129280Z             {
2026-06-21T09:42:01.9129642Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.9129891Z               "line": 74
2026-06-21T09:42:01.9130143Z             },
2026-06-21T09:42:01.9130371Z             {
2026-06-21T09:42:01.9130723Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.9130985Z               "line": 332
2026-06-21T09:42:01.9131215Z             },
2026-06-21T09:42:01.9131443Z             {
2026-06-21T09:42:01.9131792Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.9132043Z               "line": 621
2026-06-21T09:42:01.9132278Z             },
2026-06-21T09:42:01.9132512Z             {
2026-06-21T09:42:01.9132883Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T09:42:01.9133120Z               "line": 31
2026-06-21T09:42:01.9133361Z             },
2026-06-21T09:42:01.9133585Z             {
2026-06-21T09:42:01.9133947Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T09:42:01.9134186Z               "line": 50
2026-06-21T09:42:01.9134425Z             },
2026-06-21T09:42:01.9134664Z             {
2026-06-21T09:42:01.9135026Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T09:42:01.9135274Z               "line": 69
2026-06-21T09:42:01.9135512Z             },
2026-06-21T09:42:01.9135741Z             {
2026-06-21T09:42:01.9136100Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T09:42:01.9136344Z               "line": 113
2026-06-21T09:42:01.9136587Z             },
2026-06-21T09:42:01.9136824Z             {
2026-06-21T09:42:01.9137196Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T09:42:01.9137444Z               "line": 25
2026-06-21T09:42:01.9137682Z             },
2026-06-21T09:42:01.9137917Z             {
2026-06-21T09:42:01.9138284Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T09:42:01.9138535Z               "line": 34
2026-06-21T09:42:01.9138761Z             },
2026-06-21T09:42:01.9139067Z             {
2026-06-21T09:42:01.9139419Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T09:42:01.9139672Z               "line": 17
2026-06-21T09:42:01.9140016Z             },
2026-06-21T09:42:01.9140250Z             {
2026-06-21T09:42:01.9140635Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9140883Z               "line": 4817
2026-06-21T09:42:01.9141119Z             },
2026-06-21T09:42:01.9141345Z             {
2026-06-21T09:42:01.9141650Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:42:01.9141907Z               "line": 419
2026-06-21T09:42:01.9142142Z             }
2026-06-21T09:42:01.9142376Z           ]
2026-06-21T09:42:01.9142599Z         },
2026-06-21T09:42:01.9142828Z         "int": {
2026-06-21T09:42:01.9143081Z           "complete": true,
2026-06-21T09:42:01.9143330Z           "evidence": [
2026-06-21T09:42:01.9143561Z             {
2026-06-21T09:42:01.9143917Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:42:01.9144169Z               "line": 821
2026-06-21T09:42:01.9144389Z             }
2026-06-21T09:42:01.9144618Z           ]
2026-06-21T09:42:01.9144861Z         },
2026-06-21T09:42:01.9145099Z         "unit": {
2026-06-21T09:42:01.9145366Z           "complete": true,
2026-06-21T09:42:01.9145610Z           "evidence": [
2026-06-21T09:42:01.9145844Z             {
2026-06-21T09:42:01.9146188Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:42:01.9146442Z               "line": 341
2026-06-21T09:42:01.9146670Z             },
2026-06-21T09:42:01.9146913Z             {
2026-06-21T09:42:01.9147261Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:42:01.9147504Z               "line": 1115
2026-06-21T09:42:01.9147738Z             },
2026-06-21T09:42:01.9147976Z             {
2026-06-21T09:42:01.9148338Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T09:42:01.9148585Z               "line": 151
2026-06-21T09:42:01.9148826Z             },
2026-06-21T09:42:01.9149147Z             {
2026-06-21T09:42:01.9149509Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T09:42:01.9149771Z               "line": 61
2026-06-21T09:42:01.9149999Z             },
2026-06-21T09:42:01.9150232Z             {
2026-06-21T09:42:01.9150595Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T09:42:01.9150848Z               "line": 111
2026-06-21T09:42:01.9151077Z             },
2026-06-21T09:42:01.9151307Z             {
2026-06-21T09:42:01.9151660Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T09:42:01.9151915Z               "line": 138
2026-06-21T09:42:01.9152153Z             },
2026-06-21T09:42:01.9152388Z             {
2026-06-21T09:42:01.9152740Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T09:42:01.9152983Z               "line": 148
2026-06-21T09:42:01.9153208Z             },
2026-06-21T09:42:01.9153445Z             {
2026-06-21T09:42:01.9153745Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9154003Z               "line": 10021
2026-06-21T09:42:01.9154236Z             }
2026-06-21T09:42:01.9154472Z           ]
2026-06-21T09:42:01.9154705Z         }
2026-06-21T09:42:01.9154935Z       }
2026-06-21T09:42:01.9155169Z     },
2026-06-21T09:42:01.9155406Z     {
2026-06-21T09:42:01.9155668Z       "id": "REQ-SUBNET-6",
2026-06-21T09:42:01.9157925Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-21T09:42:01.9158183Z       "requiredStages": [
2026-06-21T09:42:01.9158427Z         "impl",
2026-06-21T09:42:01.9158656Z         "unit"
2026-06-21T09:42:01.9158889Z       ],
2026-06-21T09:42:01.9159190Z       "stages": {
2026-06-21T09:42:01.9159428Z         "doc": {
2026-06-21T09:42:01.9159693Z           "complete": false,
2026-06-21T09:42:01.9159935Z           "evidence": []
2026-06-21T09:42:01.9160177Z         },
2026-06-21T09:42:01.9160407Z         "impl": {
2026-06-21T09:42:01.9160792Z           "complete": true,
2026-06-21T09:42:01.9161040Z           "evidence": [
2026-06-21T09:42:01.9161275Z             {
2026-06-21T09:42:01.9161708Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.9161943Z               "line": 254
2026-06-21T09:42:01.9162182Z             },
2026-06-21T09:42:01.9162413Z             {
2026-06-21T09:42:01.9162708Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9162962Z               "line": 4475
2026-06-21T09:42:01.9163191Z             },
2026-06-21T09:42:01.9163429Z             {
2026-06-21T09:42:01.9163719Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9163972Z               "line": 4492
2026-06-21T09:42:01.9164206Z             },
2026-06-21T09:42:01.9164446Z             {
2026-06-21T09:42:01.9164739Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9164989Z               "line": 4545
2026-06-21T09:42:01.9165227Z             },
2026-06-21T09:42:01.9165452Z             {
2026-06-21T09:42:01.9165758Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9166010Z               "line": 4568
2026-06-21T09:42:01.9166257Z             }
2026-06-21T09:42:01.9166477Z           ]
2026-06-21T09:42:01.9166712Z         },
2026-06-21T09:42:01.9166960Z         "int": {
2026-06-21T09:42:01.9167226Z           "complete": false,
2026-06-21T09:42:01.9167482Z           "evidence": []
2026-06-21T09:42:01.9167705Z         },
2026-06-21T09:42:01.9167942Z         "unit": {
2026-06-21T09:42:01.9168199Z           "complete": true,
2026-06-21T09:42:01.9168452Z           "evidence": [
2026-06-21T09:42:01.9168682Z             {
2026-06-21T09:42:01.9169049Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9169292Z               "line": 10035
2026-06-21T09:42:01.9169536Z             },
2026-06-21T09:42:01.9169774Z             {
2026-06-21T09:42:01.9170068Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9170319Z               "line": 10068
2026-06-21T09:42:01.9170552Z             },
2026-06-21T09:42:01.9170786Z             {
2026-06-21T09:42:01.9171081Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9171338Z               "line": 10077
2026-06-21T09:42:01.9171568Z             }
2026-06-21T09:42:01.9171798Z           ]
2026-06-21T09:42:01.9172030Z         }
2026-06-21T09:42:01.9172268Z       }
2026-06-21T09:42:01.9172498Z     },
2026-06-21T09:42:01.9172737Z     {
2026-06-21T09:42:01.9172992Z       "id": "REQ-SUBNET-7",
2026-06-21T09:42:01.9177844Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-21T09:42:01.9178137Z       "requiredStages": [
2026-06-21T09:42:01.9178364Z         "impl",
2026-06-21T09:42:01.9178618Z         "unit"
2026-06-21T09:42:01.9178847Z       ],
2026-06-21T09:42:01.9179166Z       "stages": {
2026-06-21T09:42:01.9179418Z         "doc": {
2026-06-21T09:42:01.9179675Z           "complete": false,
2026-06-21T09:42:01.9179932Z           "evidence": []
2026-06-21T09:42:01.9180163Z         },
2026-06-21T09:42:01.9180406Z         "impl": {
2026-06-21T09:42:01.9180661Z           "complete": true,
2026-06-21T09:42:01.9180917Z           "evidence": [
2026-06-21T09:42:01.9181161Z             {
2026-06-21T09:42:01.9181513Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T09:42:01.9181770Z               "line": 17
2026-06-21T09:42:01.9182004Z             },
2026-06-21T09:42:01.9182232Z             {
2026-06-21T09:42:01.9182585Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.9182838Z               "line": 103
2026-06-21T09:42:01.9183186Z             },
2026-06-21T09:42:01.9183406Z             {
2026-06-21T09:42:01.9183857Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:42:01.9184101Z               "line": 312
2026-06-21T09:42:01.9184335Z             },
2026-06-21T09:42:01.9184558Z             {
2026-06-21T09:42:01.9184936Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:42:01.9185179Z               "line": 131
2026-06-21T09:42:01.9185407Z             },
2026-06-21T09:42:01.9185637Z             {
2026-06-21T09:42:01.9186005Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9186258Z               "line": 160
2026-06-21T09:42:01.9186496Z             },
2026-06-21T09:42:01.9186734Z             {
2026-06-21T09:42:01.9187111Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9187349Z               "line": 447
2026-06-21T09:42:01.9187592Z             },
2026-06-21T09:42:01.9187827Z             {
2026-06-21T09:42:01.9188199Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9188447Z               "line": 670
2026-06-21T09:42:01.9188687Z             },
2026-06-21T09:42:01.9188924Z             {
2026-06-21T09:42:01.9189392Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9189639Z               "line": 710
2026-06-21T09:42:01.9189864Z             },
2026-06-21T09:42:01.9190093Z             {
2026-06-21T09:42:01.9190459Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9190709Z               "line": 766
2026-06-21T09:42:01.9190952Z             },
2026-06-21T09:42:01.9191179Z             {
2026-06-21T09:42:01.9191548Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.9191801Z               "line": 136
2026-06-21T09:42:01.9192040Z             },
2026-06-21T09:42:01.9192274Z             {
2026-06-21T09:42:01.9192608Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.9192874Z               "line": 139
2026-06-21T09:42:01.9193102Z             }
2026-06-21T09:42:01.9193336Z           ]
2026-06-21T09:42:01.9193562Z         },
2026-06-21T09:42:01.9193799Z         "int": {
2026-06-21T09:42:01.9194060Z           "complete": false,
2026-06-21T09:42:01.9194309Z           "evidence": []
2026-06-21T09:42:01.9194547Z         },
2026-06-21T09:42:01.9194785Z         "unit": {
2026-06-21T09:42:01.9195042Z           "complete": true,
2026-06-21T09:42:01.9195281Z           "evidence": [
2026-06-21T09:42:01.9195520Z             {
2026-06-21T09:42:01.9195873Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T09:42:01.9196126Z               "line": 136
2026-06-21T09:42:01.9196362Z             },
2026-06-21T09:42:01.9196594Z             {
2026-06-21T09:42:01.9196946Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T09:42:01.9197199Z               "line": 156
2026-06-21T09:42:01.9197438Z             },
2026-06-21T09:42:01.9197676Z             {
2026-06-21T09:42:01.9198048Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9198305Z               "line": 987
2026-06-21T09:42:01.9198544Z             },
2026-06-21T09:42:01.9198787Z             {
2026-06-21T09:42:01.9199210Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:42:01.9199470Z               "line": 1009
2026-06-21T09:42:01.9199709Z             },
2026-06-21T09:42:01.9199938Z             {
2026-06-21T09:42:01.9200325Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:42:01.9200572Z               "line": 1419
2026-06-21T09:42:01.9200805Z             },
2026-06-21T09:42:01.9201034Z             {
2026-06-21T09:42:01.9201391Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:42:01.9201636Z               "line": 1036
2026-06-21T09:42:01.9201872Z             }
2026-06-21T09:42:01.9202113Z           ]
2026-06-21T09:42:01.9202347Z         }
2026-06-21T09:42:01.9202680Z       }
2026-06-21T09:42:01.9202909Z     },
2026-06-21T09:42:01.9203139Z     {
2026-06-21T09:42:01.9203405Z       "id": "REQ-SUBNET-8",
2026-06-21T09:42:01.9206742Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-21T09:42:01.9207022Z       "requiredStages": [
2026-06-21T09:42:01.9207253Z         "impl",
2026-06-21T09:42:01.9207492Z         "unit"
2026-06-21T09:42:01.9207731Z       ],
2026-06-21T09:42:01.9207965Z       "stages": {
2026-06-21T09:42:01.9208207Z         "doc": {
2026-06-21T09:42:01.9208465Z           "complete": false,
2026-06-21T09:42:01.9208718Z           "evidence": []
2026-06-21T09:42:01.9209032Z         },
2026-06-21T09:42:01.9209267Z         "impl": {
2026-06-21T09:42:01.9209534Z           "complete": true,
2026-06-21T09:42:01.9209789Z           "evidence": [
2026-06-21T09:42:01.9210031Z             {
2026-06-21T09:42:01.9210326Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9210584Z               "line": 3835
2026-06-21T09:42:01.9210813Z             },
2026-06-21T09:42:01.9211050Z             {
2026-06-21T09:42:01.9211351Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9211603Z               "line": 3864
2026-06-21T09:42:01.9211838Z             },
2026-06-21T09:42:01.9212072Z             {
2026-06-21T09:42:01.9212370Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9212616Z               "line": 3881
2026-06-21T09:42:01.9212856Z             },
2026-06-21T09:42:01.9213084Z             {
2026-06-21T09:42:01.9213375Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9213626Z               "line": 3904
2026-06-21T09:42:01.9213861Z             },
2026-06-21T09:42:01.9214095Z             {
2026-06-21T09:42:01.9214396Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9214649Z               "line": 4318
2026-06-21T09:42:01.9214881Z             }
2026-06-21T09:42:01.9215100Z           ]
2026-06-21T09:42:01.9215338Z         },
2026-06-21T09:42:01.9215571Z         "int": {
2026-06-21T09:42:01.9215828Z           "complete": false,
2026-06-21T09:42:01.9216068Z           "evidence": []
2026-06-21T09:42:01.9216312Z         },
2026-06-21T09:42:01.9216544Z         "unit": {
2026-06-21T09:42:01.9216792Z           "complete": true,
2026-06-21T09:42:01.9217039Z           "evidence": [
2026-06-21T09:42:01.9217275Z             {
2026-06-21T09:42:01.9217573Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9217813Z               "line": 10225
2026-06-21T09:42:01.9218048Z             },
2026-06-21T09:42:01.9218282Z             {
2026-06-21T09:42:01.9218577Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9218835Z               "line": 10241
2026-06-21T09:42:01.9219160Z             }
2026-06-21T09:42:01.9219392Z           ]
2026-06-21T09:42:01.9219626Z         }
2026-06-21T09:42:01.9219851Z       }
2026-06-21T09:42:01.9220084Z     },
2026-06-21T09:42:01.9220316Z     {
2026-06-21T09:42:01.9220576Z       "id": "REQ-TERM-1",
2026-06-21T09:42:01.9221092Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-21T09:42:01.9221353Z       "requiredStages": [
2026-06-21T09:42:01.9221587Z         "impl",
2026-06-21T09:42:01.9221826Z         "unit"
2026-06-21T09:42:01.9222065Z       ],
2026-06-21T09:42:01.9222307Z       "stages": {
2026-06-21T09:42:01.9222546Z         "doc": {
2026-06-21T09:42:01.9222798Z           "complete": false,
2026-06-21T09:42:01.9223054Z           "evidence": []
2026-06-21T09:42:01.9223271Z         },
2026-06-21T09:42:01.9223514Z         "impl": {
2026-06-21T09:42:01.9223768Z           "complete": true,
2026-06-21T09:42:01.9224006Z           "evidence": [
2026-06-21T09:42:01.9224245Z             {
2026-06-21T09:42:01.9224679Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T09:42:01.9224922Z               "line": 59
2026-06-21T09:42:01.9225247Z             },
2026-06-21T09:42:01.9225485Z             {
2026-06-21T09:42:01.9225807Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T09:42:01.9226055Z               "line": 234
2026-06-21T09:42:01.9226289Z             },
2026-06-21T09:42:01.9226514Z             {
2026-06-21T09:42:01.9226852Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T09:42:01.9227099Z               "line": 100
2026-06-21T09:42:01.9227328Z             }
2026-06-21T09:42:01.9227562Z           ]
2026-06-21T09:42:01.9227782Z         },
2026-06-21T09:42:01.9228018Z         "int": {
2026-06-21T09:42:01.9228283Z           "complete": false,
2026-06-21T09:42:01.9228523Z           "evidence": []
2026-06-21T09:42:01.9228756Z         },
2026-06-21T09:42:01.9229066Z         "unit": {
2026-06-21T09:42:01.9236439Z           "complete": true,
2026-06-21T09:42:01.9236788Z           "evidence": [
2026-06-21T09:42:01.9237025Z             {
2026-06-21T09:42:01.9237393Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T09:42:01.9237650Z               "line": 24
2026-06-21T09:42:01.9237889Z             },
2026-06-21T09:42:01.9238127Z             {
2026-06-21T09:42:01.9238475Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T09:42:01.9238727Z               "line": 56
2026-06-21T09:42:01.9239044Z             }
2026-06-21T09:42:01.9239287Z           ]
2026-06-21T09:42:01.9239515Z         }
2026-06-21T09:42:01.9239745Z       }
2026-06-21T09:42:01.9239975Z     },
2026-06-21T09:42:01.9240198Z     {
2026-06-21T09:42:01.9240450Z       "id": "REQ-TERM-2",
2026-06-21T09:42:01.9241004Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-21T09:42:01.9241272Z       "requiredStages": [
2026-06-21T09:42:01.9241513Z         "impl",
2026-06-21T09:42:01.9241749Z         "unit"
2026-06-21T09:42:01.9241983Z       ],
2026-06-21T09:42:01.9242303Z       "stages": {
2026-06-21T09:42:01.9242537Z         "doc": {
2026-06-21T09:42:01.9242803Z           "complete": false,
2026-06-21T09:42:01.9243041Z           "evidence": []
2026-06-21T09:42:01.9243284Z         },
2026-06-21T09:42:01.9243523Z         "impl": {
2026-06-21T09:42:01.9243776Z           "complete": true,
2026-06-21T09:42:01.9244026Z           "evidence": [
2026-06-21T09:42:01.9244254Z             {
2026-06-21T09:42:01.9244592Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T09:42:01.9244836Z               "line": 117
2026-06-21T09:42:01.9245065Z             },
2026-06-21T09:42:01.9245297Z             {
2026-06-21T09:42:01.9245631Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T09:42:01.9245870Z               "line": 127
2026-06-21T09:42:01.9246099Z             }
2026-06-21T09:42:01.9246343Z           ]
2026-06-21T09:42:01.9246571Z         },
2026-06-21T09:42:01.9246799Z         "int": {
2026-06-21T09:42:01.9247062Z           "complete": false,
2026-06-21T09:42:01.9247343Z           "evidence": []
2026-06-21T09:42:01.9247571Z         },
2026-06-21T09:42:01.9247805Z         "unit": {
2026-06-21T09:42:01.9248072Z           "complete": true,
2026-06-21T09:42:01.9248311Z           "evidence": [
2026-06-21T09:42:01.9248549Z             {
2026-06-21T09:42:01.9248888Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T09:42:01.9249234Z               "line": 46
2026-06-21T09:42:01.9249475Z             },
2026-06-21T09:42:01.9249718Z             {
2026-06-21T09:42:01.9250061Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T09:42:01.9250300Z               "line": 77
2026-06-21T09:42:01.9250539Z             }
2026-06-21T09:42:01.9250758Z           ]
2026-06-21T09:42:01.9250992Z         }
2026-06-21T09:42:01.9251226Z       }
2026-06-21T09:42:01.9251451Z     },
2026-06-21T09:42:01.9251678Z     {
2026-06-21T09:42:01.9251925Z       "id": "REQ-TERM-3",
2026-06-21T09:42:01.9252337Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-21T09:42:01.9252838Z       "requiredStages": [
2026-06-21T09:42:01.9253082Z         "impl",
2026-06-21T09:42:01.9253407Z         "unit"
2026-06-21T09:42:01.9253639Z       ],
2026-06-21T09:42:01.9253887Z       "stages": {
2026-06-21T09:42:01.9254121Z         "doc": {
2026-06-21T09:42:01.9254370Z           "complete": false,
2026-06-21T09:42:01.9254610Z           "evidence": []
2026-06-21T09:42:01.9254842Z         },
2026-06-21T09:42:01.9255082Z         "impl": {
2026-06-21T09:42:01.9255330Z           "complete": true,
2026-06-21T09:42:01.9255586Z           "evidence": [
2026-06-21T09:42:01.9255815Z             {
2026-06-21T09:42:01.9256153Z               "path": "crates/spt-term/src/stream.rs",
2026-06-21T09:42:01.9256397Z               "line": 71
2026-06-21T09:42:01.9256627Z             }
2026-06-21T09:42:01.9256865Z           ]
2026-06-21T09:42:01.9257093Z         },
2026-06-21T09:42:01.9257317Z         "int": {
2026-06-21T09:42:01.9257569Z           "complete": false,
2026-06-21T09:42:01.9257831Z           "evidence": []
2026-06-21T09:42:01.9258055Z         },
2026-06-21T09:42:01.9258289Z         "unit": {
2026-06-21T09:42:01.9258556Z           "complete": true,
2026-06-21T09:42:01.9258799Z           "evidence": [
2026-06-21T09:42:01.9259114Z             {
2026-06-21T09:42:01.9259448Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T09:42:01.9259690Z               "line": 37
2026-06-21T09:42:01.9259922Z             },
2026-06-21T09:42:01.9260150Z             {
2026-06-21T09:42:01.9260494Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T09:42:01.9260732Z               "line": 67
2026-06-21T09:42:01.9260955Z             }
2026-06-21T09:42:01.9261189Z           ]
2026-06-21T09:42:01.9261414Z         }
2026-06-21T09:42:01.9261642Z       }
2026-06-21T09:42:01.9261876Z     },
2026-06-21T09:42:01.9262106Z     {
2026-06-21T09:42:01.9262349Z       "id": "REQ-TERM-4",
2026-06-21T09:42:01.9263851Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-21T09:42:01.9264123Z       "requiredStages": [
2026-06-21T09:42:01.9264352Z         "impl",
2026-06-21T09:42:01.9264591Z         "unit",
2026-06-21T09:42:01.9264815Z         "int"
2026-06-21T09:42:01.9265047Z       ],
2026-06-21T09:42:01.9265281Z       "stages": {
2026-06-21T09:42:01.9265517Z         "doc": {
2026-06-21T09:42:01.9265774Z           "complete": false,
2026-06-21T09:42:01.9266018Z           "evidence": []
2026-06-21T09:42:01.9266247Z         },
2026-06-21T09:42:01.9266481Z         "impl": {
2026-06-21T09:42:01.9266738Z           "complete": true,
2026-06-21T09:42:01.9266981Z           "evidence": [
2026-06-21T09:42:01.9267206Z             {
2026-06-21T09:42:01.9267544Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.9267798Z               "line": 37
2026-06-21T09:42:01.9268033Z             },
2026-06-21T09:42:01.9268267Z             {
2026-06-21T09:42:01.9268615Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:42:01.9268859Z               "line": 25
2026-06-21T09:42:01.9269192Z             },
2026-06-21T09:42:01.9269431Z             {
2026-06-21T09:42:01.9269784Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:42:01.9270033Z               "line": 114
2026-06-21T09:42:01.9270259Z             },
2026-06-21T09:42:01.9270496Z             {
2026-06-21T09:42:01.9270829Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:42:01.9271073Z               "line": 267
2026-06-21T09:42:01.9271307Z             },
2026-06-21T09:42:01.9271539Z             {
2026-06-21T09:42:01.9271883Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:42:01.9272131Z               "line": 289
2026-06-21T09:42:01.9272365Z             },
2026-06-21T09:42:01.9272599Z             {
2026-06-21T09:42:01.9272952Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:42:01.9273316Z               "line": 307
2026-06-21T09:42:01.9273549Z             },
2026-06-21T09:42:01.9273786Z             {
2026-06-21T09:42:01.9274207Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T09:42:01.9274450Z               "line": 33
2026-06-21T09:42:01.9274679Z             },
2026-06-21T09:42:01.9274913Z             {
2026-06-21T09:42:01.9278922Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9279295Z               "line": 52
2026-06-21T09:42:01.9279528Z             },
2026-06-21T09:42:01.9279757Z             {
2026-06-21T09:42:01.9280124Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9280372Z               "line": 180
2026-06-21T09:42:01.9280608Z             },
2026-06-21T09:42:01.9280824Z             {
2026-06-21T09:42:01.9281179Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9281423Z               "line": 190
2026-06-21T09:42:01.9281657Z             },
2026-06-21T09:42:01.9281900Z             {
2026-06-21T09:42:01.9282257Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9282521Z               "line": 250
2026-06-21T09:42:01.9282743Z             },
2026-06-21T09:42:01.9282977Z             {
2026-06-21T09:42:01.9283315Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.9283564Z               "line": 284
2026-06-21T09:42:01.9283792Z             },
2026-06-21T09:42:01.9284013Z             {
2026-06-21T09:42:01.9284342Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.9284586Z               "line": 295
2026-06-21T09:42:01.9284810Z             },
2026-06-21T09:42:01.9285043Z             {
2026-06-21T09:42:01.9285334Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9285577Z               "line": 1193
2026-06-21T09:42:01.9285802Z             }
2026-06-21T09:42:01.9286032Z           ]
2026-06-21T09:42:01.9286244Z         },
2026-06-21T09:42:01.9286490Z         "int": {
2026-06-21T09:42:01.9286747Z           "complete": true,
2026-06-21T09:42:01.9286995Z           "evidence": [
2026-06-21T09:42:01.9287228Z             {
2026-06-21T09:42:01.9287576Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-21T09:42:01.9287819Z               "line": 18
2026-06-21T09:42:01.9288053Z             }
2026-06-21T09:42:01.9288269Z           ]
2026-06-21T09:42:01.9288506Z         },
2026-06-21T09:42:01.9288734Z         "unit": {
2026-06-21T09:42:01.9289073Z           "complete": true,
2026-06-21T09:42:01.9289312Z           "evidence": [
2026-06-21T09:42:01.9289554Z             {
2026-06-21T09:42:01.9289884Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.9290136Z               "line": 364
2026-06-21T09:42:01.9290369Z             },
2026-06-21T09:42:01.9290603Z             {
2026-06-21T09:42:01.9290932Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.9291168Z               "line": 416
2026-06-21T09:42:01.9291408Z             },
2026-06-21T09:42:01.9291640Z             {
2026-06-21T09:42:01.9291978Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.9292212Z               "line": 426
2026-06-21T09:42:01.9292442Z             },
2026-06-21T09:42:01.9292693Z             {
2026-06-21T09:42:01.9293056Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:42:01.9293304Z               "line": 436
2026-06-21T09:42:01.9293537Z             },
2026-06-21T09:42:01.9293757Z             {
2026-06-21T09:42:01.9294110Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:42:01.9294342Z               "line": 456
2026-06-21T09:42:01.9294582Z             },
2026-06-21T09:42:01.9294807Z             {
2026-06-21T09:42:01.9295164Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:42:01.9295432Z               "line": 478
2026-06-21T09:42:01.9295666Z             },
2026-06-21T09:42:01.9295909Z             {
2026-06-21T09:42:01.9296258Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:42:01.9296639Z               "line": 491
2026-06-21T09:42:01.9296861Z             },
2026-06-21T09:42:01.9297192Z             {
2026-06-21T09:42:01.9297541Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:42:01.9297774Z               "line": 502
2026-06-21T09:42:01.9298004Z             },
2026-06-21T09:42:01.9298238Z             {
2026-06-21T09:42:01.9298576Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T09:42:01.9298805Z               "line": 108
2026-06-21T09:42:01.9299135Z             },
2026-06-21T09:42:01.9299367Z             {
2026-06-21T09:42:01.9299685Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T09:42:01.9299939Z               "line": 119
2026-06-21T09:42:01.9300168Z             },
2026-06-21T09:42:01.9300401Z             {
2026-06-21T09:42:01.9300720Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T09:42:01.9300967Z               "line": 127
2026-06-21T09:42:01.9301211Z             },
2026-06-21T09:42:01.9301437Z             {
2026-06-21T09:42:01.9301789Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9302035Z               "line": 474
2026-06-21T09:42:01.9302271Z             },
2026-06-21T09:42:01.9302509Z             {
2026-06-21T09:42:01.9302867Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9303106Z               "line": 501
2026-06-21T09:42:01.9303336Z             },
2026-06-21T09:42:01.9303563Z             {
2026-06-21T09:42:01.9303902Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9304169Z               "line": 520
2026-06-21T09:42:01.9304412Z             },
2026-06-21T09:42:01.9304638Z             {
2026-06-21T09:42:01.9304992Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9305253Z               "line": 535
2026-06-21T09:42:01.9305476Z             },
2026-06-21T09:42:01.9305696Z             {
2026-06-21T09:42:01.9306035Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9306287Z               "line": 561
2026-06-21T09:42:01.9306518Z             },
2026-06-21T09:42:01.9306764Z             {
2026-06-21T09:42:01.9307109Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9307359Z               "line": 581
2026-06-21T09:42:01.9307582Z             },
2026-06-21T09:42:01.9307815Z             {
2026-06-21T09:42:01.9308164Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9308406Z               "line": 591
2026-06-21T09:42:01.9308639Z             },
2026-06-21T09:42:01.9308869Z             {
2026-06-21T09:42:01.9309288Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9309536Z               "line": 683
2026-06-21T09:42:01.9309771Z             },
2026-06-21T09:42:01.9310005Z             {
2026-06-21T09:42:01.9310336Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.9310588Z               "line": 885
2026-06-21T09:42:01.9310818Z             },
2026-06-21T09:42:01.9311052Z             {
2026-06-21T09:42:01.9311338Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9311581Z               "line": 9792
2026-06-21T09:42:01.9311819Z             }
2026-06-21T09:42:01.9312044Z           ]
2026-06-21T09:42:01.9312273Z         }
2026-06-21T09:42:01.9312500Z       }
2026-06-21T09:42:01.9312732Z     },
2026-06-21T09:42:01.9312951Z     {
2026-06-21T09:42:01.9313208Z       "id": "REQ-TERM-5",
2026-06-21T09:42:01.9318109Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-21T09:42:01.9318490Z       "requiredStages": [
2026-06-21T09:42:01.9318842Z         "doc",
2026-06-21T09:42:01.9319147Z         "impl",
2026-06-21T09:42:01.9319381Z         "unit",
2026-06-21T09:42:01.9319615Z         "int"
2026-06-21T09:42:01.9319839Z       ],
2026-06-21T09:42:01.9320077Z       "stages": {
2026-06-21T09:42:01.9320312Z         "doc": {
2026-06-21T09:42:01.9320574Z           "complete": true,
2026-06-21T09:42:01.9320824Z           "evidence": [
2026-06-21T09:42:01.9321054Z             {
2026-06-21T09:42:01.9321335Z               "path": "docs/MANIFEST.md",
2026-06-21T09:42:01.9321574Z               "line": 234
2026-06-21T09:42:01.9321812Z             }
2026-06-21T09:42:01.9322036Z           ]
2026-06-21T09:42:01.9322266Z         },
2026-06-21T09:42:01.9322495Z         "impl": {
2026-06-21T09:42:01.9322741Z           "complete": true,
2026-06-21T09:42:01.9322979Z           "evidence": [
2026-06-21T09:42:01.9323222Z             {
2026-06-21T09:42:01.9323559Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.9323811Z               "line": 75
2026-06-21T09:42:01.9324049Z             },
2026-06-21T09:42:01.9324288Z             {
2026-06-21T09:42:01.9324612Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.9324860Z               "line": 131
2026-06-21T09:42:01.9325085Z             },
2026-06-21T09:42:01.9325313Z             {
2026-06-21T09:42:01.9325638Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:42:01.9325889Z               "line": 22
2026-06-21T09:42:01.9326131Z             },
2026-06-21T09:42:01.9326364Z             {
2026-06-21T09:42:01.9326689Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:42:01.9326926Z               "line": 87
2026-06-21T09:42:01.9327155Z             },
2026-06-21T09:42:01.9327380Z             {
2026-06-21T09:42:01.9327708Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T09:42:01.9327952Z               "line": 30
2026-06-21T09:42:01.9328171Z             },
2026-06-21T09:42:01.9328408Z             {
2026-06-21T09:42:01.9328749Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9329078Z               "line": 103
2026-06-21T09:42:01.9329312Z             },
2026-06-21T09:42:01.9329541Z             {
2026-06-21T09:42:01.9329880Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9330117Z               "line": 167
2026-06-21T09:42:01.9330351Z             },
2026-06-21T09:42:01.9330576Z             {
2026-06-21T09:42:01.9330914Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9331168Z               "line": 434
2026-06-21T09:42:01.9331399Z             },
2026-06-21T09:42:01.9331633Z             {
2026-06-21T09:42:01.9331924Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9332168Z               "line": 5650
2026-06-21T09:42:01.9332396Z             },
2026-06-21T09:42:01.9332639Z             {
2026-06-21T09:42:01.9332930Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9333187Z               "line": 5957
2026-06-21T09:42:01.9333417Z             }
2026-06-21T09:42:01.9333639Z           ]
2026-06-21T09:42:01.9333866Z         },
2026-06-21T09:42:01.9334096Z         "int": {
2026-06-21T09:42:01.9334353Z           "complete": true,
2026-06-21T09:42:01.9334595Z           "evidence": [
2026-06-21T09:42:01.9334829Z             {
2026-06-21T09:42:01.9335258Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T09:42:01.9335497Z               "line": 17
2026-06-21T09:42:01.9335730Z             }
2026-06-21T09:42:01.9335960Z           ]
2026-06-21T09:42:01.9336193Z         },
2026-06-21T09:42:01.9336426Z         "unit": {
2026-06-21T09:42:01.9336687Z           "complete": true,
2026-06-21T09:42:01.9336938Z           "evidence": [
2026-06-21T09:42:01.9337147Z             {
2026-06-21T09:42:01.9337491Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.9337844Z               "line": 375
2026-06-21T09:42:01.9338077Z             },
2026-06-21T09:42:01.9338401Z             {
2026-06-21T09:42:01.9338731Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:42:01.9339082Z               "line": 162
2026-06-21T09:42:01.9339314Z             },
2026-06-21T09:42:01.9339543Z             {
2026-06-21T09:42:01.9339858Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:42:01.9340111Z               "line": 179
2026-06-21T09:42:01.9340339Z             },
2026-06-21T09:42:01.9340573Z             {
2026-06-21T09:42:01.9340898Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:42:01.9341145Z               "line": 201
2026-06-21T09:42:01.9341365Z             },
2026-06-21T09:42:01.9341593Z             {
2026-06-21T09:42:01.9341917Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:42:01.9342165Z               "line": 212
2026-06-21T09:42:01.9342461Z             },
2026-06-21T09:42:01.9342704Z             {
2026-06-21T09:42:01.9343019Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:42:01.9343276Z               "line": 223
2026-06-21T09:42:01.9343509Z             },
2026-06-21T09:42:01.9343747Z             {
2026-06-21T09:42:01.9344095Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.9344342Z               "line": 1525
2026-06-21T09:42:01.9344579Z             },
2026-06-21T09:42:01.9344807Z             {
2026-06-21T09:42:01.9345145Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.9345389Z               "line": 1568
2026-06-21T09:42:01.9345623Z             },
2026-06-21T09:42:01.9345862Z             {
2026-06-21T09:42:01.9346206Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9346458Z               "line": 606
2026-06-21T09:42:01.9346686Z             },
2026-06-21T09:42:01.9346920Z             {
2026-06-21T09:42:01.9347265Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9347528Z               "line": 634
2026-06-21T09:42:01.9347760Z             },
2026-06-21T09:42:01.9347984Z             {
2026-06-21T09:42:01.9348332Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9348581Z               "line": 646
2026-06-21T09:42:01.9348820Z             },
2026-06-21T09:42:01.9349125Z             {
2026-06-21T09:42:01.9349469Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9349710Z               "line": 669
2026-06-21T09:42:01.9349936Z             },
2026-06-21T09:42:01.9350166Z             {
2026-06-21T09:42:01.9350456Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9350705Z               "line": 8503
2026-06-21T09:42:01.9350928Z             },
2026-06-21T09:42:01.9351152Z             {
2026-06-21T09:42:01.9351443Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9351673Z               "line": 8561
2026-06-21T09:42:01.9351911Z             }
2026-06-21T09:42:01.9352130Z           ]
2026-06-21T09:42:01.9352364Z         }
2026-06-21T09:42:01.9352591Z       }
2026-06-21T09:42:01.9352820Z     },
2026-06-21T09:42:01.9353049Z     {
2026-06-21T09:42:01.9353292Z       "id": "REQ-TERM-6",
2026-06-21T09:42:01.9356789Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-21T09:42:01.9357052Z       "requiredStages": [
2026-06-21T09:42:01.9357285Z         "impl",
2026-06-21T09:42:01.9357522Z         "unit",
2026-06-21T09:42:01.9357746Z         "int"
2026-06-21T09:42:01.9357972Z       ],
2026-06-21T09:42:01.9358206Z       "stages": {
2026-06-21T09:42:01.9358440Z         "doc": {
2026-06-21T09:42:01.9358812Z           "complete": false,
2026-06-21T09:42:01.9359117Z           "evidence": []
2026-06-21T09:42:01.9359441Z         },
2026-06-21T09:42:01.9359676Z         "impl": {
2026-06-21T09:42:01.9359934Z           "complete": true,
2026-06-21T09:42:01.9360170Z           "evidence": [
2026-06-21T09:42:01.9360406Z             {
2026-06-21T09:42:01.9360749Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.9360983Z               "line": 132
2026-06-21T09:42:01.9361222Z             },
2026-06-21T09:42:01.9361449Z             {
2026-06-21T09:42:01.9361783Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.9362023Z               "line": 187
2026-06-21T09:42:01.9362252Z             },
2026-06-21T09:42:01.9362486Z             {
2026-06-21T09:42:01.9362820Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:42:01.9363060Z               "line": 17
2026-06-21T09:42:01.9363285Z             },
2026-06-21T09:42:01.9363528Z             {
2026-06-21T09:42:01.9363862Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:42:01.9364115Z               "line": 104
2026-06-21T09:42:01.9364348Z             },
2026-06-21T09:42:01.9364587Z             {
2026-06-21T09:42:01.9364925Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9365159Z               "line": 319
2026-06-21T09:42:01.9365396Z             },
2026-06-21T09:42:01.9365617Z             {
2026-06-21T09:42:01.9365951Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9366204Z               "line": 396
2026-06-21T09:42:01.9366433Z             }
2026-06-21T09:42:01.9366668Z           ]
2026-06-21T09:42:01.9366895Z         },
2026-06-21T09:42:01.9367134Z         "int": {
2026-06-21T09:42:01.9367396Z           "complete": true,
2026-06-21T09:42:01.9367636Z           "evidence": [
2026-06-21T09:42:01.9367868Z             {
2026-06-21T09:42:01.9368292Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T09:42:01.9368547Z               "line": 18
2026-06-21T09:42:01.9368780Z             }
2026-06-21T09:42:01.9369090Z           ]
2026-06-21T09:42:01.9369329Z         },
2026-06-21T09:42:01.9369573Z         "unit": {
2026-06-21T09:42:01.9369835Z           "complete": true,
2026-06-21T09:42:01.9370068Z           "evidence": [
2026-06-21T09:42:01.9370302Z             {
2026-06-21T09:42:01.9370640Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:42:01.9370892Z               "line": 135
2026-06-21T09:42:01.9371123Z             },
2026-06-21T09:42:01.9371347Z             {
2026-06-21T09:42:01.9371714Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:42:01.9371963Z               "line": 150
2026-06-21T09:42:01.9372206Z             },
2026-06-21T09:42:01.9372440Z             {
2026-06-21T09:42:01.9372774Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:42:01.9373031Z               "line": 166
2026-06-21T09:42:01.9373265Z             },
2026-06-21T09:42:01.9373503Z             {
2026-06-21T09:42:01.9373836Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:42:01.9374084Z               "line": 257
2026-06-21T09:42:01.9374312Z             },
2026-06-21T09:42:01.9374545Z             {
2026-06-21T09:42:01.9374898Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9375137Z               "line": 738
2026-06-21T09:42:01.9375376Z             },
2026-06-21T09:42:01.9375605Z             {
2026-06-21T09:42:01.9375961Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9376206Z               "line": 759
2026-06-21T09:42:01.9376435Z             },
2026-06-21T09:42:01.9376670Z             {
2026-06-21T09:42:01.9376993Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:42:01.9377242Z               "line": 726
2026-06-21T09:42:01.9377475Z             }
2026-06-21T09:42:01.9377709Z           ]
2026-06-21T09:42:01.9377943Z         }
2026-06-21T09:42:01.9378285Z       }
2026-06-21T09:42:01.9378511Z     },
2026-06-21T09:42:01.9378737Z     {
2026-06-21T09:42:01.9379068Z       "id": "REQ-TERM-7",
2026-06-21T09:42:01.9382875Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-21T09:42:01.9383138Z       "requiredStages": [
2026-06-21T09:42:01.9383395Z         "impl",
2026-06-21T09:42:01.9383621Z         "unit",
2026-06-21T09:42:01.9383867Z         "int"
2026-06-21T09:42:01.9384091Z       ],
2026-06-21T09:42:01.9384339Z       "stages": {
2026-06-21T09:42:01.9384567Z         "doc": {
2026-06-21T09:42:01.9384829Z           "complete": false,
2026-06-21T09:42:01.9385082Z           "evidence": []
2026-06-21T09:42:01.9385312Z         },
2026-06-21T09:42:01.9385550Z         "impl": {
2026-06-21T09:42:01.9385812Z           "complete": true,
2026-06-21T09:42:01.9386045Z           "evidence": [
2026-06-21T09:42:01.9386275Z             {
2026-06-21T09:42:01.9386611Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.9386848Z               "line": 133
2026-06-21T09:42:01.9387090Z             },
2026-06-21T09:42:01.9387324Z             {
2026-06-21T09:42:01.9387667Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.9387916Z               "line": 326
2026-06-21T09:42:01.9388155Z             },
2026-06-21T09:42:01.9388383Z             {
2026-06-21T09:42:01.9388703Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T09:42:01.9388936Z               "line": 15
2026-06-21T09:42:01.9389260Z             },
2026-06-21T09:42:01.9389483Z             {
2026-06-21T09:42:01.9389797Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T09:42:01.9390055Z               "line": 32
2026-06-21T09:42:01.9390282Z             },
2026-06-21T09:42:01.9390525Z             {
2026-06-21T09:42:01.9390859Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T09:42:01.9391107Z               "line": 49
2026-06-21T09:42:01.9391337Z             },
2026-06-21T09:42:01.9391570Z             {
2026-06-21T09:42:01.9391921Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9392162Z               "line": 286
2026-06-21T09:42:01.9392401Z             },
2026-06-21T09:42:01.9392625Z             {
2026-06-21T09:42:01.9392973Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9393222Z               "line": 320
2026-06-21T09:42:01.9393459Z             }
2026-06-21T09:42:01.9393703Z           ]
2026-06-21T09:42:01.9393927Z         },
2026-06-21T09:42:01.9394161Z         "int": {
2026-06-21T09:42:01.9394418Z           "complete": true,
2026-06-21T09:42:01.9394679Z           "evidence": [
2026-06-21T09:42:01.9394899Z             {
2026-06-21T09:42:01.9395327Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T09:42:01.9395576Z               "line": 19
2026-06-21T09:42:01.9395796Z             }
2026-06-21T09:42:01.9396033Z           ]
2026-06-21T09:42:01.9396262Z         },
2026-06-21T09:42:01.9396506Z         "unit": {
2026-06-21T09:42:01.9396759Z           "complete": true,
2026-06-21T09:42:01.9397014Z           "evidence": [
2026-06-21T09:42:01.9397241Z             {
2026-06-21T09:42:01.9397565Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.9397818Z               "line": 455
2026-06-21T09:42:01.9398052Z             },
2026-06-21T09:42:01.9398290Z             {
2026-06-21T09:42:01.9398619Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:42:01.9398867Z               "line": 568
2026-06-21T09:42:01.9399182Z             },
2026-06-21T09:42:01.9399411Z             {
2026-06-21T09:42:01.9399867Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T09:42:01.9400113Z               "line": 58
2026-06-21T09:42:01.9400442Z             },
2026-06-21T09:42:01.9400666Z             {
2026-06-21T09:42:01.9400990Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T09:42:01.9401234Z               "line": 77
2026-06-21T09:42:01.9401472Z             },
2026-06-21T09:42:01.9401691Z             {
2026-06-21T09:42:01.9402010Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T09:42:01.9402255Z               "line": 87
2026-06-21T09:42:01.9402472Z             },
2026-06-21T09:42:01.9402713Z             {
2026-06-21T09:42:01.9403051Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T09:42:01.9403286Z               "line": 94
2026-06-21T09:42:01.9403519Z             },
2026-06-21T09:42:01.9403743Z             {
2026-06-21T09:42:01.9404096Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9404339Z               "line": 691
2026-06-21T09:42:01.9404572Z             },
2026-06-21T09:42:01.9405259Z             {
2026-06-21T09:42:01.9405625Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:42:01.9405935Z               "line": 716
2026-06-21T09:42:01.9406160Z             }
2026-06-21T09:42:01.9406398Z           ]
2026-06-21T09:42:01.9406622Z         }
2026-06-21T09:42:01.9406846Z       }
2026-06-21T09:42:01.9407076Z     },
2026-06-21T09:42:01.9407300Z     {
2026-06-21T09:42:01.9407551Z       "id": "REQ-UPD-1",
2026-06-21T09:42:01.9407882Z       "title": "Peer-propagated update over P2P",
2026-06-21T09:42:01.9408144Z       "requiredStages": [
2026-06-21T09:42:01.9408374Z         "impl",
2026-06-21T09:42:01.9408612Z         "unit",
2026-06-21T09:42:01.9408850Z         "int"
2026-06-21T09:42:01.9409140Z       ],
2026-06-21T09:42:01.9409385Z       "stages": {
2026-06-21T09:42:01.9409609Z         "doc": {
2026-06-21T09:42:01.9409863Z           "complete": false,
2026-06-21T09:42:01.9410109Z           "evidence": []
2026-06-21T09:42:01.9410351Z         },
2026-06-21T09:42:01.9410594Z         "impl": {
2026-06-21T09:42:01.9410840Z           "complete": true,
2026-06-21T09:42:01.9411078Z           "evidence": [
2026-06-21T09:42:01.9411308Z             {
2026-06-21T09:42:01.9411660Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9411894Z               "line": 28
2026-06-21T09:42:01.9412119Z             },
2026-06-21T09:42:01.9412347Z             {
2026-06-21T09:42:01.9412695Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9412937Z               "line": 103
2026-06-21T09:42:01.9413156Z             },
2026-06-21T09:42:01.9413387Z             {
2026-06-21T09:42:01.9413737Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9413988Z               "line": 342
2026-06-21T09:42:01.9414236Z             },
2026-06-21T09:42:01.9414460Z             {
2026-06-21T09:42:01.9414799Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9415039Z               "line": 22
2026-06-21T09:42:01.9415267Z             },
2026-06-21T09:42:01.9415495Z             {
2026-06-21T09:42:01.9415847Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9416090Z               "line": 207
2026-06-21T09:42:01.9416315Z             },
2026-06-21T09:42:01.9416548Z             {
2026-06-21T09:42:01.9416891Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9417144Z               "line": 283
2026-06-21T09:42:01.9417382Z             },
2026-06-21T09:42:01.9417602Z             {
2026-06-21T09:42:01.9417955Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9418192Z               "line": 340
2026-06-21T09:42:01.9418437Z             },
2026-06-21T09:42:01.9418662Z             {
2026-06-21T09:42:01.9419085Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:42:01.9419348Z               "line": 37
2026-06-21T09:42:01.9419573Z             }
2026-06-21T09:42:01.9419930Z           ]
2026-06-21T09:42:01.9420160Z         },
2026-06-21T09:42:01.9420393Z         "int": {
2026-06-21T09:42:01.9420732Z           "complete": true,
2026-06-21T09:42:01.9420982Z           "evidence": [
2026-06-21T09:42:01.9421214Z             {
2026-06-21T09:42:01.9421576Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:42:01.9421830Z               "line": 207
2026-06-21T09:42:01.9422064Z             },
2026-06-21T09:42:01.9422292Z             {
2026-06-21T09:42:01.9422635Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:42:01.9422883Z               "line": 1082
2026-06-21T09:42:01.9423126Z             }
2026-06-21T09:42:01.9423347Z           ]
2026-06-21T09:42:01.9423577Z         },
2026-06-21T09:42:01.9423809Z         "unit": {
2026-06-21T09:42:01.9424064Z           "complete": true,
2026-06-21T09:42:01.9424306Z           "evidence": [
2026-06-21T09:42:01.9424538Z             {
2026-06-21T09:42:01.9424878Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9425130Z               "line": 490
2026-06-21T09:42:01.9425369Z             },
2026-06-21T09:42:01.9425604Z             {
2026-06-21T09:42:01.9425947Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9426190Z               "line": 616
2026-06-21T09:42:01.9426426Z             },
2026-06-21T09:42:01.9426660Z             {
2026-06-21T09:42:01.9427022Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T09:42:01.9427266Z               "line": 277
2026-06-21T09:42:01.9427500Z             },
2026-06-21T09:42:01.9427727Z             {
2026-06-21T09:42:01.9428062Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:42:01.9428305Z               "line": 124
2026-06-21T09:42:01.9428533Z             },
2026-06-21T09:42:01.9428762Z             {
2026-06-21T09:42:01.9429260Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:42:01.9429541Z               "line": 200
2026-06-21T09:42:01.9429790Z             }
2026-06-21T09:42:01.9430019Z           ]
2026-06-21T09:42:01.9430252Z         }
2026-06-21T09:42:01.9430486Z       }
2026-06-21T09:42:01.9430720Z     },
2026-06-21T09:42:01.9430949Z     {
2026-06-21T09:42:01.9431191Z       "id": "REQ-UPD-2",
2026-06-21T09:42:01.9431609Z       "title": "All binaries signature-verified before handoff",
2026-06-21T09:42:01.9431869Z       "requiredStages": [
2026-06-21T09:42:01.9432108Z         "impl",
2026-06-21T09:42:01.9432347Z         "unit"
2026-06-21T09:42:01.9432566Z       ],
2026-06-21T09:42:01.9432795Z       "stages": {
2026-06-21T09:42:01.9433024Z         "doc": {
2026-06-21T09:42:01.9433282Z           "complete": false,
2026-06-21T09:42:01.9433530Z           "evidence": []
2026-06-21T09:42:01.9433767Z         },
2026-06-21T09:42:01.9434001Z         "impl": {
2026-06-21T09:42:01.9434257Z           "complete": true,
2026-06-21T09:42:01.9434494Z           "evidence": [
2026-06-21T09:42:01.9434727Z             {
2026-06-21T09:42:01.9435085Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9435333Z               "line": 343
2026-06-21T09:42:01.9435562Z             },
2026-06-21T09:42:01.9435806Z             {
2026-06-21T09:42:01.9436154Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9436407Z               "line": 476
2026-06-21T09:42:01.9436639Z             },
2026-06-21T09:42:01.9436878Z             {
2026-06-21T09:42:01.9437206Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9437459Z               "line": 29
2026-06-21T09:42:01.9437688Z             },
2026-06-21T09:42:01.9437906Z             {
2026-06-21T09:42:01.9438249Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9438483Z               "line": 271
2026-06-21T09:42:01.9438719Z             },
2026-06-21T09:42:01.9439014Z             {
2026-06-21T09:42:01.9439407Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9439663Z               "line": 288
2026-06-21T09:42:01.9440016Z             },
2026-06-21T09:42:01.9440254Z             {
2026-06-21T09:42:01.9440594Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9440937Z               "line": 408
2026-06-21T09:42:01.9441179Z             },
2026-06-21T09:42:01.9441408Z             {
2026-06-21T09:42:01.9441742Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9441989Z               "line": 558
2026-06-21T09:42:01.9442246Z             },
2026-06-21T09:42:01.9442526Z             {
2026-06-21T09:42:01.9442869Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:42:01.9443117Z               "line": 155
2026-06-21T09:42:01.9443335Z             }
2026-06-21T09:42:01.9443574Z           ]
2026-06-21T09:42:01.9443800Z         },
2026-06-21T09:42:01.9444022Z         "int": {
2026-06-21T09:42:01.9444279Z           "complete": false,
2026-06-21T09:42:01.9444528Z           "evidence": []
2026-06-21T09:42:01.9444761Z         },
2026-06-21T09:42:01.9445001Z         "unit": {
2026-06-21T09:42:01.9445259Z           "complete": true,
2026-06-21T09:42:01.9445502Z           "evidence": [
2026-06-21T09:42:01.9445741Z             {
2026-06-21T09:42:01.9446080Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9446327Z               "line": 750
2026-06-21T09:42:01.9446565Z             },
2026-06-21T09:42:01.9446790Z             {
2026-06-21T09:42:01.9447132Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9447377Z               "line": 811
2026-06-21T09:42:01.9447604Z             },
2026-06-21T09:42:01.9447832Z             {
2026-06-21T09:42:01.9448171Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9448415Z               "line": 825
2026-06-21T09:42:01.9448639Z             },
2026-06-21T09:42:01.9448877Z             {
2026-06-21T09:42:01.9449297Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9449555Z               "line": 841
2026-06-21T09:42:01.9449796Z             },
2026-06-21T09:42:01.9450018Z             {
2026-06-21T09:42:01.9450356Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9450605Z               "line": 932
2026-06-21T09:42:01.9450839Z             },
2026-06-21T09:42:01.9451062Z             {
2026-06-21T09:42:01.9451405Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:42:01.9451634Z               "line": 414
2026-06-21T09:42:01.9451868Z             },
2026-06-21T09:42:01.9452098Z             {
2026-06-21T09:42:01.9452437Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:42:01.9452686Z               "line": 427
2026-06-21T09:42:01.9452909Z             },
2026-06-21T09:42:01.9453143Z             {
2026-06-21T09:42:01.9453510Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T09:42:01.9453763Z               "line": 410
2026-06-21T09:42:01.9454001Z             }
2026-06-21T09:42:01.9454230Z           ]
2026-06-21T09:42:01.9454454Z         }
2026-06-21T09:42:01.9454689Z       }
2026-06-21T09:42:01.9454921Z     },
2026-06-21T09:42:01.9455145Z     {
2026-06-21T09:42:01.9455405Z       "id": "REQ-UPD-3",
2026-06-21T09:42:01.9455919Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-21T09:42:01.9456185Z       "requiredStages": [
2026-06-21T09:42:01.9456420Z         "impl",
2026-06-21T09:42:01.9456654Z         "unit",
2026-06-21T09:42:01.9456892Z         "int"
2026-06-21T09:42:01.9457121Z       ],
2026-06-21T09:42:01.9457359Z       "stages": {
2026-06-21T09:42:01.9457594Z         "doc": {
2026-06-21T09:42:01.9457851Z           "complete": false,
2026-06-21T09:42:01.9458106Z           "evidence": []
2026-06-21T09:42:01.9458336Z         },
2026-06-21T09:42:01.9458575Z         "impl": {
2026-06-21T09:42:01.9458832Z           "complete": true,
2026-06-21T09:42:01.9459137Z           "evidence": [
2026-06-21T09:42:01.9459370Z             {
2026-06-21T09:42:01.9459713Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9460081Z               "line": 40
2026-06-21T09:42:01.9460304Z             },
2026-06-21T09:42:01.9460635Z             {
2026-06-21T09:42:01.9464694Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9464976Z               "line": 87
2026-06-21T09:42:01.9465206Z             },
2026-06-21T09:42:01.9465434Z             {
2026-06-21T09:42:01.9465771Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:42:01.9466017Z               "line": 1042
2026-06-21T09:42:01.9466256Z             },
2026-06-21T09:42:01.9466479Z             {
2026-06-21T09:42:01.9466823Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:42:01.9467070Z               "line": 2017
2026-06-21T09:42:01.9467299Z             },
2026-06-21T09:42:01.9467538Z             {
2026-06-21T09:42:01.9467867Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:42:01.9468111Z               "line": 26
2026-06-21T09:42:01.9468339Z             },
2026-06-21T09:42:01.9468576Z             {
2026-06-21T09:42:01.9468915Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:42:01.9469253Z               "line": 114
2026-06-21T09:42:01.9469492Z             },
2026-06-21T09:42:01.9469722Z             {
2026-06-21T09:42:01.9470060Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:42:01.9470298Z               "line": 246
2026-06-21T09:42:01.9470521Z             },
2026-06-21T09:42:01.9470756Z             {
2026-06-21T09:42:01.9471035Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9471286Z               "line": 2442
2026-06-21T09:42:01.9471510Z             }
2026-06-21T09:42:01.9471744Z           ]
2026-06-21T09:42:01.9471973Z         },
2026-06-21T09:42:01.9472201Z         "int": {
2026-06-21T09:42:01.9472464Z           "complete": true,
2026-06-21T09:42:01.9472711Z           "evidence": [
2026-06-21T09:42:01.9472951Z             {
2026-06-21T09:42:01.9473295Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T09:42:01.9473552Z               "line": 58
2026-06-21T09:42:01.9473788Z             }
2026-06-21T09:42:01.9474020Z           ]
2026-06-21T09:42:01.9474249Z         },
2026-06-21T09:42:01.9474482Z         "unit": {
2026-06-21T09:42:01.9474734Z           "complete": true,
2026-06-21T09:42:01.9474974Z           "evidence": [
2026-06-21T09:42:01.9475213Z             {
2026-06-21T09:42:01.9475555Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9475804Z               "line": 532
2026-06-21T09:42:01.9476037Z             },
2026-06-21T09:42:01.9476260Z             {
2026-06-21T09:42:01.9476620Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9476864Z               "line": 585
2026-06-21T09:42:01.9477102Z             },
2026-06-21T09:42:01.9477334Z             {
2026-06-21T09:42:01.9477684Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9477936Z               "line": 653
2026-06-21T09:42:01.9478170Z             },
2026-06-21T09:42:01.9478395Z             {
2026-06-21T09:42:01.9478742Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:42:01.9479057Z               "line": 1102
2026-06-21T09:42:01.9479293Z             },
2026-06-21T09:42:01.9479518Z             {
2026-06-21T09:42:01.9479851Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:42:01.9480095Z               "line": 271
2026-06-21T09:42:01.9480333Z             },
2026-06-21T09:42:01.9480558Z             {
2026-06-21T09:42:01.9480892Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:42:01.9481139Z               "line": 295
2026-06-21T09:42:01.9481363Z             },
2026-06-21T09:42:01.9481600Z             {
2026-06-21T09:42:01.9481928Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:42:01.9482175Z               "line": 316
2026-06-21T09:42:01.9482403Z             },
2026-06-21T09:42:01.9482633Z             {
2026-06-21T09:42:01.9482981Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:42:01.9483395Z               "line": 332
2026-06-21T09:42:01.9483629Z             }
2026-06-21T09:42:01.9483944Z           ]
2026-06-21T09:42:01.9484179Z         }
2026-06-21T09:42:01.9484401Z       }
2026-06-21T09:42:01.9484622Z     },
2026-06-21T09:42:01.9484852Z     {
2026-06-21T09:42:01.9485105Z       "id": "REQ-UPD-4",
2026-06-21T09:42:01.9485643Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-21T09:42:01.9485891Z       "requiredStages": [
2026-06-21T09:42:01.9486130Z         "impl",
2026-06-21T09:42:01.9486359Z         "unit"
2026-06-21T09:42:01.9486587Z       ],
2026-06-21T09:42:01.9486825Z       "stages": {
2026-06-21T09:42:01.9487054Z         "doc": {
2026-06-21T09:42:01.9487309Z           "complete": false,
2026-06-21T09:42:01.9487552Z           "evidence": []
2026-06-21T09:42:01.9487776Z         },
2026-06-21T09:42:01.9488010Z         "impl": {
2026-06-21T09:42:01.9488273Z           "complete": true,
2026-06-21T09:42:01.9488520Z           "evidence": [
2026-06-21T09:42:01.9488730Z             {
2026-06-21T09:42:01.9489173Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9489421Z               "line": 41
2026-06-21T09:42:01.9489655Z             },
2026-06-21T09:42:01.9489888Z             {
2026-06-21T09:42:01.9490245Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9490493Z               "line": 88
2026-06-21T09:42:01.9490717Z             },
2026-06-21T09:42:01.9490946Z             {
2026-06-21T09:42:01.9491270Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T09:42:01.9491514Z               "line": 23
2026-06-21T09:42:01.9491742Z             },
2026-06-21T09:42:01.9491970Z             {
2026-06-21T09:42:01.9492306Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T09:42:01.9492541Z               "line": 56
2026-06-21T09:42:01.9492774Z             },
2026-06-21T09:42:01.9492987Z             {
2026-06-21T09:42:01.9493331Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T09:42:01.9493570Z               "line": 77
2026-06-21T09:42:01.9493808Z             },
2026-06-21T09:42:01.9494034Z             {
2026-06-21T09:42:01.9494381Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:42:01.9494615Z               "line": 236
2026-06-21T09:42:01.9494842Z             },
2026-06-21T09:42:01.9495079Z             {
2026-06-21T09:42:01.9495398Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:42:01.9495641Z               "line": 108
2026-06-21T09:42:01.9495869Z             },
2026-06-21T09:42:01.9496099Z             {
2026-06-21T09:42:01.9496413Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.9496657Z               "line": 270
2026-06-21T09:42:01.9496896Z             },
2026-06-21T09:42:01.9497133Z             {
2026-06-21T09:42:01.9497418Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9497665Z               "line": 2441
2026-06-21T09:42:01.9497878Z             }
2026-06-21T09:42:01.9498112Z           ]
2026-06-21T09:42:01.9498341Z         },
2026-06-21T09:42:01.9498585Z         "int": {
2026-06-21T09:42:01.9498837Z           "complete": false,
2026-06-21T09:42:01.9499162Z           "evidence": []
2026-06-21T09:42:01.9499400Z         },
2026-06-21T09:42:01.9499633Z         "unit": {
2026-06-21T09:42:01.9499891Z           "complete": true,
2026-06-21T09:42:01.9500135Z           "evidence": [
2026-06-21T09:42:01.9500366Z             {
2026-06-21T09:42:01.9500714Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9500962Z               "line": 581
2026-06-21T09:42:01.9501202Z             },
2026-06-21T09:42:01.9501431Z             {
2026-06-21T09:42:01.9501774Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9502017Z               "line": 706
2026-06-21T09:42:01.9502250Z             },
2026-06-21T09:42:01.9502483Z             {
2026-06-21T09:42:01.9502814Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:42:01.9503176Z               "line": 384
2026-06-21T09:42:01.9503406Z             },
2026-06-21T09:42:01.9503730Z             {
2026-06-21T09:42:01.9504059Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T09:42:01.9504303Z               "line": 102
2026-06-21T09:42:01.9504530Z             },
2026-06-21T09:42:01.9504759Z             {
2026-06-21T09:42:01.9505093Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T09:42:01.9505332Z               "line": 123
2026-06-21T09:42:01.9505569Z             },
2026-06-21T09:42:01.9505800Z             {
2026-06-21T09:42:01.9506134Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T09:42:01.9506382Z               "line": 142
2026-06-21T09:42:01.9506611Z             },
2026-06-21T09:42:01.9506845Z             {
2026-06-21T09:42:01.9507151Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:42:01.9507397Z               "line": 582
2026-06-21T09:42:01.9507640Z             },
2026-06-21T09:42:01.9507871Z             {
2026-06-21T09:42:01.9508202Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:42:01.9508457Z               "line": 566
2026-06-21T09:42:01.9508686Z             },
2026-06-21T09:42:01.9508911Z             {
2026-06-21T09:42:01.9509291Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9509535Z               "line": 8256
2026-06-21T09:42:01.9509770Z             }
2026-06-21T09:42:01.9509998Z           ]
2026-06-21T09:42:01.9510222Z         }
2026-06-21T09:42:01.9510456Z       }
2026-06-21T09:42:01.9510681Z     },
2026-06-21T09:42:01.9510907Z     {
2026-06-21T09:42:01.9511155Z       "id": "REQ-UPD-5",
2026-06-21T09:42:01.9511570Z       "title": "spt-core ripple-updates registered adapters",
2026-06-21T09:42:01.9511832Z       "requiredStages": [
2026-06-21T09:42:01.9512066Z         "impl",
2026-06-21T09:42:01.9512301Z         "unit"
2026-06-21T09:42:01.9512524Z       ],
2026-06-21T09:42:01.9512772Z       "stages": {
2026-06-21T09:42:01.9512992Z         "doc": {
2026-06-21T09:42:01.9513248Z           "complete": false,
2026-06-21T09:42:01.9513502Z           "evidence": []
2026-06-21T09:42:01.9513722Z         },
2026-06-21T09:42:01.9513961Z         "impl": {
2026-06-21T09:42:01.9514205Z           "complete": true,
2026-06-21T09:42:01.9514446Z           "evidence": [
2026-06-21T09:42:01.9514666Z             {
2026-06-21T09:42:01.9515043Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.9515286Z               "line": 27
2026-06-21T09:42:01.9515512Z             },
2026-06-21T09:42:01.9515725Z             {
2026-06-21T09:42:01.9516086Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.9516331Z               "line": 87
2026-06-21T09:42:01.9516561Z             },
2026-06-21T09:42:01.9516795Z             {
2026-06-21T09:42:01.9517167Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.9517406Z               "line": 145
2026-06-21T09:42:01.9517648Z             },
2026-06-21T09:42:01.9517867Z             {
2026-06-21T09:42:01.9518210Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9518449Z               "line": 492
2026-06-21T09:42:01.9518687Z             },
2026-06-21T09:42:01.9518907Z             {
2026-06-21T09:42:01.9519289Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9519551Z               "line": 546
2026-06-21T09:42:01.9519776Z             }
2026-06-21T09:42:01.9519996Z           ]
2026-06-21T09:42:01.9520215Z         },
2026-06-21T09:42:01.9520439Z         "int": {
2026-06-21T09:42:01.9520701Z           "complete": false,
2026-06-21T09:42:01.9520945Z           "evidence": []
2026-06-21T09:42:01.9521169Z         },
2026-06-21T09:42:01.9521401Z         "unit": {
2026-06-21T09:42:01.9521655Z           "complete": true,
2026-06-21T09:42:01.9521897Z           "evidence": [
2026-06-21T09:42:01.9522120Z             {
2026-06-21T09:42:01.9522488Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.9522841Z               "line": 272
2026-06-21T09:42:01.9523166Z             },
2026-06-21T09:42:01.9523394Z             {
2026-06-21T09:42:01.9523760Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.9524011Z               "line": 286
2026-06-21T09:42:01.9524236Z             },
2026-06-21T09:42:01.9524464Z             {
2026-06-21T09:42:01.9524826Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.9525070Z               "line": 300
2026-06-21T09:42:01.9525302Z             },
2026-06-21T09:42:01.9525532Z             {
2026-06-21T09:42:01.9525908Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.9526151Z               "line": 314
2026-06-21T09:42:01.9526387Z             },
2026-06-21T09:42:01.9526617Z             {
2026-06-21T09:42:01.9526992Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.9527244Z               "line": 348
2026-06-21T09:42:01.9527478Z             },
2026-06-21T09:42:01.9527698Z             {
2026-06-21T09:42:01.9528050Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.9528295Z               "line": 1071
2026-06-21T09:42:01.9528513Z             }
2026-06-21T09:42:01.9528742Z           ]
2026-06-21T09:42:01.9529056Z         }
2026-06-21T09:42:01.9529294Z       }
2026-06-21T09:42:01.9529535Z     },
2026-06-21T09:42:01.9529754Z     {
2026-06-21T09:42:01.9530012Z       "id": "REQ-UPD-6",
2026-06-21T09:42:01.9532624Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-21T09:42:01.9532892Z       "requiredStages": [
2026-06-21T09:42:01.9533120Z         "doc",
2026-06-21T09:42:01.9533363Z         "impl",
2026-06-21T09:42:01.9533601Z         "unit",
2026-06-21T09:42:01.9533830Z         "int"
2026-06-21T09:42:01.9534060Z       ],
2026-06-21T09:42:01.9534291Z       "stages": {
2026-06-21T09:42:01.9534527Z         "doc": {
2026-06-21T09:42:01.9534782Z           "complete": true,
2026-06-21T09:42:01.9535024Z           "evidence": [
2026-06-21T09:42:01.9535257Z             {
2026-06-21T09:42:01.9535596Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T09:42:01.9535843Z               "line": 3
2026-06-21T09:42:01.9536077Z             },
2026-06-21T09:42:01.9536317Z             {
2026-06-21T09:42:01.9536608Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-21T09:42:01.9536841Z               "line": 3
2026-06-21T09:42:01.9537073Z             },
2026-06-21T09:42:01.9537297Z             {
2026-06-21T09:42:01.9537719Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-21T09:42:01.9537958Z               "line": 3
2026-06-21T09:42:01.9538197Z             }
2026-06-21T09:42:01.9538424Z           ]
2026-06-21T09:42:01.9538649Z         },
2026-06-21T09:42:01.9538884Z         "impl": {
2026-06-21T09:42:01.9539259Z           "complete": true,
2026-06-21T09:42:01.9539518Z           "evidence": [
2026-06-21T09:42:01.9539749Z             {
2026-06-21T09:42:01.9540100Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9540338Z               "line": 76
2026-06-21T09:42:01.9540568Z             },
2026-06-21T09:42:01.9540792Z             {
2026-06-21T09:42:01.9541144Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9541388Z               "line": 212
2026-06-21T09:42:01.9541621Z             },
2026-06-21T09:42:01.9541854Z             {
2026-06-21T09:42:01.9542212Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9542531Z               "line": 69
2026-06-21T09:42:01.9542765Z             },
2026-06-21T09:42:01.9542994Z             {
2026-06-21T09:42:01.9543342Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9543699Z               "line": 133
2026-06-21T09:42:01.9543933Z             },
2026-06-21T09:42:01.9544277Z             {
2026-06-21T09:42:01.9544625Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9544875Z               "line": 243
2026-06-21T09:42:01.9545097Z             },
2026-06-21T09:42:01.9545337Z             {
2026-06-21T09:42:01.9545680Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9545933Z               "line": 406
2026-06-21T09:42:01.9546171Z             },
2026-06-21T09:42:01.9546403Z             {
2026-06-21T09:42:01.9546756Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9547000Z               "line": 534
2026-06-21T09:42:01.9547239Z             },
2026-06-21T09:42:01.9547469Z             {
2026-06-21T09:42:01.9547809Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9548055Z               "line": 548
2026-06-21T09:42:01.9548279Z             },
2026-06-21T09:42:01.9548518Z             {
2026-06-21T09:42:01.9548861Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9549175Z               "line": 603
2026-06-21T09:42:01.9549401Z             },
2026-06-21T09:42:01.9549624Z             {
2026-06-21T09:42:01.9549972Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9550209Z               "line": 634
2026-06-21T09:42:01.9550447Z             },
2026-06-21T09:42:01.9550669Z             {
2026-06-21T09:42:01.9551037Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T09:42:01.9551275Z               "line": 137
2026-06-21T09:42:01.9551503Z             },
2026-06-21T09:42:01.9551737Z             {
2026-06-21T09:42:01.9552086Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T09:42:01.9552330Z               "line": 184
2026-06-21T09:42:01.9552564Z             },
2026-06-21T09:42:01.9552796Z             {
2026-06-21T09:42:01.9553152Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9553386Z               "line": 78
2026-06-21T09:42:01.9553630Z             },
2026-06-21T09:42:01.9553849Z             {
2026-06-21T09:42:01.9554188Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9554426Z               "line": 114
2026-06-21T09:42:01.9554664Z             },
2026-06-21T09:42:01.9554889Z             {
2026-06-21T09:42:01.9555218Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9555469Z               "line": 185
2026-06-21T09:42:01.9555695Z             },
2026-06-21T09:42:01.9555921Z             {
2026-06-21T09:42:01.9556258Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9556512Z               "line": 260
2026-06-21T09:42:01.9556751Z             },
2026-06-21T09:42:01.9556978Z             {
2026-06-21T09:42:01.9557316Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9557560Z               "line": 292
2026-06-21T09:42:01.9557804Z             },
2026-06-21T09:42:01.9558034Z             {
2026-06-21T09:42:01.9558379Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9558629Z               "line": 323
2026-06-21T09:42:01.9558863Z             },
2026-06-21T09:42:01.9559154Z             {
2026-06-21T09:42:01.9559488Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9559722Z               "line": 346
2026-06-21T09:42:01.9559942Z             },
2026-06-21T09:42:01.9560184Z             {
2026-06-21T09:42:01.9560528Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9560760Z               "line": 388
2026-06-21T09:42:01.9560993Z             },
2026-06-21T09:42:01.9561220Z             {
2026-06-21T09:42:01.9561559Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9561806Z               "line": 398
2026-06-21T09:42:01.9562026Z             },
2026-06-21T09:42:01.9562256Z             {
2026-06-21T09:42:01.9562712Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9562974Z               "line": 410
2026-06-21T09:42:01.9563303Z             },
2026-06-21T09:42:01.9563534Z             {
2026-06-21T09:42:01.9563866Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9564109Z               "line": 420
2026-06-21T09:42:01.9564342Z             },
2026-06-21T09:42:01.9564567Z             {
2026-06-21T09:42:01.9564915Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9565153Z               "line": 439
2026-06-21T09:42:01.9565388Z             },
2026-06-21T09:42:01.9565615Z             {
2026-06-21T09:42:01.9565953Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9566194Z               "line": 449
2026-06-21T09:42:01.9566414Z             },
2026-06-21T09:42:01.9566651Z             {
2026-06-21T09:42:01.9566981Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9567232Z               "line": 94
2026-06-21T09:42:01.9567462Z             },
2026-06-21T09:42:01.9567682Z             {
2026-06-21T09:42:01.9568044Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9568279Z               "line": 120
2026-06-21T09:42:01.9568506Z             },
2026-06-21T09:42:01.9568730Z             {
2026-06-21T09:42:01.9569122Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9569376Z               "line": 135
2026-06-21T09:42:01.9569605Z             },
2026-06-21T09:42:01.9569838Z             {
2026-06-21T09:42:01.9570177Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9570419Z               "line": 162
2026-06-21T09:42:01.9570644Z             },
2026-06-21T09:42:01.9570888Z             {
2026-06-21T09:42:01.9571232Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9571473Z               "line": 174
2026-06-21T09:42:01.9571708Z             },
2026-06-21T09:42:01.9571943Z             {
2026-06-21T09:42:01.9572272Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9572524Z               "line": 185
2026-06-21T09:42:01.9572758Z             },
2026-06-21T09:42:01.9573011Z             {
2026-06-21T09:42:01.9573335Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9573578Z               "line": 451
2026-06-21T09:42:01.9573807Z             },
2026-06-21T09:42:01.9574032Z             {
2026-06-21T09:42:01.9574373Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9574616Z               "line": 573
2026-06-21T09:42:01.9574849Z             },
2026-06-21T09:42:01.9575079Z             {
2026-06-21T09:42:01.9575422Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:42:01.9575657Z               "line": 171
2026-06-21T09:42:01.9575885Z             },
2026-06-21T09:42:01.9576128Z             {
2026-06-21T09:42:01.9576461Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:42:01.9576721Z               "line": 65
2026-06-21T09:42:01.9576950Z             },
2026-06-21T09:42:01.9577178Z             {
2026-06-21T09:42:01.9577517Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:42:01.9577760Z               "line": 71
2026-06-21T09:42:01.9577994Z             },
2026-06-21T09:42:01.9578224Z             {
2026-06-21T09:42:01.9578553Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:42:01.9578791Z               "line": 77
2026-06-21T09:42:01.9579111Z             },
2026-06-21T09:42:01.9579333Z             {
2026-06-21T09:42:01.9579640Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.9579889Z               "line": 778
2026-06-21T09:42:01.9580118Z             },
2026-06-21T09:42:01.9580350Z             {
2026-06-21T09:42:01.9580641Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.9580880Z               "line": 795
2026-06-21T09:42:01.9581105Z             },
2026-06-21T09:42:01.9581453Z             {
2026-06-21T09:42:01.9581749Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.9581980Z               "line": 838
2026-06-21T09:42:01.9582311Z             },
2026-06-21T09:42:01.9582536Z             {
2026-06-21T09:42:01.9582841Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.9583080Z               "line": 981
2026-06-21T09:42:01.9583323Z             },
2026-06-21T09:42:01.9583546Z             {
2026-06-21T09:42:01.9583837Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.9584081Z               "line": 1131
2026-06-21T09:42:01.9584301Z             }
2026-06-21T09:42:01.9584535Z           ]
2026-06-21T09:42:01.9584752Z         },
2026-06-21T09:42:01.9584986Z         "int": {
2026-06-21T09:42:01.9585239Z           "complete": true,
2026-06-21T09:42:01.9585486Z           "evidence": [
2026-06-21T09:42:01.9585720Z             {
2026-06-21T09:42:01.9586096Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T09:42:01.9586364Z               "line": 569
2026-06-21T09:42:01.9586589Z             },
2026-06-21T09:42:01.9586823Z             {
2026-06-21T09:42:01.9587159Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T09:42:01.9587399Z               "line": 135
2026-06-21T09:42:01.9587633Z             }
2026-06-21T09:42:01.9587858Z           ]
2026-06-21T09:42:01.9588092Z         },
2026-06-21T09:42:01.9588320Z         "unit": {
2026-06-21T09:42:01.9588587Z           "complete": true,
2026-06-21T09:42:01.9588835Z           "evidence": [
2026-06-21T09:42:01.9589132Z             {
2026-06-21T09:42:01.9589479Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9589724Z               "line": 626
2026-06-21T09:42:01.9589954Z             },
2026-06-21T09:42:01.9590181Z             {
2026-06-21T09:42:01.9590520Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9590768Z               "line": 675
2026-06-21T09:42:01.9590998Z             },
2026-06-21T09:42:01.9591234Z             {
2026-06-21T09:42:01.9591583Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:42:01.9591826Z               "line": 696
2026-06-21T09:42:01.9592060Z             },
2026-06-21T09:42:01.9592290Z             {
2026-06-21T09:42:01.9592636Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9592876Z               "line": 513
2026-06-21T09:42:01.9593115Z             },
2026-06-21T09:42:01.9593344Z             {
2026-06-21T09:42:01.9593678Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9593931Z               "line": 638
2026-06-21T09:42:01.9594159Z             },
2026-06-21T09:42:01.9594379Z             {
2026-06-21T09:42:01.9594717Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9594965Z               "line": 675
2026-06-21T09:42:01.9595195Z             },
2026-06-21T09:42:01.9595431Z             {
2026-06-21T09:42:01.9595770Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9596013Z               "line": 947
2026-06-21T09:42:01.9596253Z             },
2026-06-21T09:42:01.9596472Z             {
2026-06-21T09:42:01.9596825Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9597064Z               "line": 969
2026-06-21T09:42:01.9597300Z             },
2026-06-21T09:42:01.9597524Z             {
2026-06-21T09:42:01.9597856Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9598104Z               "line": 986
2026-06-21T09:42:01.9598332Z             },
2026-06-21T09:42:01.9598565Z             {
2026-06-21T09:42:01.9598899Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9599209Z               "line": 1001
2026-06-21T09:42:01.9599448Z             },
2026-06-21T09:42:01.9599678Z             {
2026-06-21T09:42:01.9600007Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9600250Z               "line": 1027
2026-06-21T09:42:01.9600477Z             },
2026-06-21T09:42:01.9600818Z             {
2026-06-21T09:42:01.9601151Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:42:01.9601499Z               "line": 457
2026-06-21T09:42:01.9601723Z             },
2026-06-21T09:42:01.9601948Z             {
2026-06-21T09:42:01.9602320Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T09:42:01.9602568Z               "line": 338
2026-06-21T09:42:01.9602798Z             },
2026-06-21T09:42:01.9603029Z             {
2026-06-21T09:42:01.9603323Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9603567Z               "line": 10549
2026-06-21T09:42:01.9603810Z             },
2026-06-21T09:42:01.9604032Z             {
2026-06-21T09:42:01.9604333Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.9604586Z               "line": 1260
2026-06-21T09:42:01.9604811Z             },
2026-06-21T09:42:01.9605044Z             {
2026-06-21T09:42:01.9605354Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T09:42:01.9605612Z               "line": 130
2026-06-21T09:42:01.9605840Z             }
2026-06-21T09:42:01.9606078Z           ]
2026-06-21T09:42:01.9606320Z         }
2026-06-21T09:42:01.9606554Z       }
2026-06-21T09:42:01.9606788Z     },
2026-06-21T09:42:01.9607017Z     {
2026-06-21T09:42:01.9607255Z       "id": "REQ-UPD-7",
2026-06-21T09:42:01.9613290Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-21T09:42:01.9613585Z       "requiredStages": [
2026-06-21T09:42:01.9613826Z         "impl",
2026-06-21T09:42:01.9614069Z         "unit"
2026-06-21T09:42:01.9614307Z       ],
2026-06-21T09:42:01.9614550Z       "stages": {
2026-06-21T09:42:01.9614784Z         "doc": {
2026-06-21T09:42:01.9615047Z           "complete": false,
2026-06-21T09:42:01.9615299Z           "evidence": []
2026-06-21T09:42:01.9615523Z         },
2026-06-21T09:42:01.9615752Z         "impl": {
2026-06-21T09:42:01.9616001Z           "complete": true,
2026-06-21T09:42:01.9616249Z           "evidence": [
2026-06-21T09:42:01.9616471Z             {
2026-06-21T09:42:01.9616767Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9617015Z               "line": 2626
2026-06-21T09:42:01.9617244Z             }
2026-06-21T09:42:01.9617467Z           ]
2026-06-21T09:42:01.9617687Z         },
2026-06-21T09:42:01.9617916Z         "int": {
2026-06-21T09:42:01.9618184Z           "complete": false,
2026-06-21T09:42:01.9618435Z           "evidence": []
2026-06-21T09:42:01.9618673Z         },
2026-06-21T09:42:01.9618901Z         "unit": {
2026-06-21T09:42:01.9619234Z           "complete": true,
2026-06-21T09:42:01.9619491Z           "evidence": [
2026-06-21T09:42:01.9619719Z             {
2026-06-21T09:42:01.9620014Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9620259Z               "line": 10525
2026-06-21T09:42:01.9620488Z             }
2026-06-21T09:42:01.9620726Z           ]
2026-06-21T09:42:01.9620959Z         }
2026-06-21T09:42:01.9621188Z       }
2026-06-21T09:42:01.9621418Z     },
2026-06-21T09:42:01.9621640Z     {
2026-06-21T09:42:01.9621890Z       "id": "REQ-UPD-8",
2026-06-21T09:42:01.9629063Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-21T09:42:01.9629602Z       "requiredStages": [
2026-06-21T09:42:01.9629842Z         "impl",
2026-06-21T09:42:01.9630075Z         "unit"
2026-06-21T09:42:01.9630313Z       ],
2026-06-21T09:42:01.9630546Z       "stages": {
2026-06-21T09:42:01.9630785Z         "doc": {
2026-06-21T09:42:01.9631038Z           "complete": false,
2026-06-21T09:42:01.9631281Z           "evidence": []
2026-06-21T09:42:01.9631515Z         },
2026-06-21T09:42:01.9631739Z         "impl": {
2026-06-21T09:42:01.9632007Z           "complete": true,
2026-06-21T09:42:01.9632243Z           "evidence": [
2026-06-21T09:42:01.9632488Z             {
2026-06-21T09:42:01.9632846Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9633085Z               "line": 77
2026-06-21T09:42:01.9633319Z             },
2026-06-21T09:42:01.9633543Z             {
2026-06-21T09:42:01.9633887Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9634119Z               "line": 49
2026-06-21T09:42:01.9634357Z             },
2026-06-21T09:42:01.9634588Z             {
2026-06-21T09:42:01.9634928Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9635165Z               "line": 152
2026-06-21T09:42:01.9635398Z             },
2026-06-21T09:42:01.9635633Z             {
2026-06-21T09:42:01.9635971Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9636223Z               "line": 215
2026-06-21T09:42:01.9636463Z             },
2026-06-21T09:42:01.9636691Z             {
2026-06-21T09:42:01.9637025Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9637272Z               "line": 230
2026-06-21T09:42:01.9637501Z             },
2026-06-21T09:42:01.9637734Z             {
2026-06-21T09:42:01.9638083Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9638335Z               "line": 247
2026-06-21T09:42:01.9638563Z             },
2026-06-21T09:42:01.9638797Z             {
2026-06-21T09:42:01.9639245Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9639508Z               "line": 269
2026-06-21T09:42:01.9639741Z             },
2026-06-21T09:42:01.9639965Z             {
2026-06-21T09:42:01.9640301Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9640544Z               "line": 66
2026-06-21T09:42:01.9640773Z             },
2026-06-21T09:42:01.9641002Z             {
2026-06-21T09:42:01.9641341Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9641594Z               "line": 154
2026-06-21T09:42:01.9641817Z             },
2026-06-21T09:42:01.9642056Z             {
2026-06-21T09:42:01.9642365Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9642651Z               "line": 2430
2026-06-21T09:42:01.9642874Z             },
2026-06-21T09:42:01.9643101Z             {
2026-06-21T09:42:01.9643391Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9643631Z               "line": 2493
2026-06-21T09:42:01.9643869Z             },
2026-06-21T09:42:01.9644093Z             {
2026-06-21T09:42:01.9644389Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9644622Z               "line": 2503
2026-06-21T09:42:01.9644856Z             },
2026-06-21T09:42:01.9645086Z             {
2026-06-21T09:42:01.9645360Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9645601Z               "line": 2510
2026-06-21T09:42:01.9645836Z             },
2026-06-21T09:42:01.9646179Z             {
2026-06-21T09:42:01.9646469Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9646822Z               "line": 2627
2026-06-21T09:42:01.9647056Z             },
2026-06-21T09:42:01.9647270Z             {
2026-06-21T09:42:01.9647576Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.9647809Z               "line": 480
2026-06-21T09:42:01.9648039Z             },
2026-06-21T09:42:01.9648266Z             {
2026-06-21T09:42:01.9648561Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:42:01.9648804Z               "line": 494
2026-06-21T09:42:01.9649128Z             }
2026-06-21T09:42:01.9653002Z           ]
2026-06-21T09:42:01.9653268Z         },
2026-06-21T09:42:01.9653509Z         "int": {
2026-06-21T09:42:01.9653772Z           "complete": false,
2026-06-21T09:42:01.9654019Z           "evidence": []
2026-06-21T09:42:01.9654257Z         },
2026-06-21T09:42:01.9654482Z         "unit": {
2026-06-21T09:42:01.9654749Z           "complete": true,
2026-06-21T09:42:01.9655007Z           "evidence": [
2026-06-21T09:42:01.9655244Z             {
2026-06-21T09:42:01.9655598Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:42:01.9655849Z               "line": 476
2026-06-21T09:42:01.9656086Z             },
2026-06-21T09:42:01.9656324Z             {
2026-06-21T09:42:01.9656672Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:42:01.9656916Z               "line": 580
2026-06-21T09:42:01.9657148Z             },
2026-06-21T09:42:01.9657377Z             {
2026-06-21T09:42:01.9657678Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9657927Z               "line": 10527
2026-06-21T09:42:01.9658155Z             },
2026-06-21T09:42:01.9658384Z             {
2026-06-21T09:42:01.9658673Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9658912Z               "line": 10549
2026-06-21T09:42:01.9659222Z             }
2026-06-21T09:42:01.9659456Z           ]
2026-06-21T09:42:01.9659688Z         }
2026-06-21T09:42:01.9659922Z       }
2026-06-21T09:42:01.9660157Z     },
2026-06-21T09:42:01.9660380Z     {
2026-06-21T09:42:01.9660633Z       "id": "REQ-UPD-9",
2026-06-21T09:42:01.9668037Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-21T09:42:01.9668328Z       "requiredStages": [
2026-06-21T09:42:01.9668562Z         "doc",
2026-06-21T09:42:01.9668792Z         "impl",
2026-06-21T09:42:01.9669074Z         "unit"
2026-06-21T09:42:01.9669304Z       ],
2026-06-21T09:42:01.9669539Z       "stages": {
2026-06-21T09:42:01.9669773Z         "doc": {
2026-06-21T09:42:01.9670026Z           "complete": true,
2026-06-21T09:42:01.9670267Z           "evidence": [
2026-06-21T09:42:01.9670502Z             {
2026-06-21T09:42:01.9670769Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.9671022Z               "line": 93
2026-06-21T09:42:01.9671260Z             },
2026-06-21T09:42:01.9671488Z             {
2026-06-21T09:42:01.9671767Z               "path": "docs/MANIFEST.md",
2026-06-21T09:42:01.9672011Z               "line": 285
2026-06-21T09:42:01.9672253Z             }
2026-06-21T09:42:01.9672481Z           ]
2026-06-21T09:42:01.9672721Z         },
2026-06-21T09:42:01.9673120Z         "impl": {
2026-06-21T09:42:01.9673374Z           "complete": true,
2026-06-21T09:42:01.9673618Z           "evidence": [
2026-06-21T09:42:01.9673951Z             {
2026-06-21T09:42:01.9674322Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.9674555Z               "line": 128
2026-06-21T09:42:01.9674791Z             },
2026-06-21T09:42:01.9675010Z             {
2026-06-21T09:42:01.9675358Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9675607Z               "line": 533
2026-06-21T09:42:01.9675846Z             },
2026-06-21T09:42:01.9676084Z             {
2026-06-21T09:42:01.9676423Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.9676675Z               "line": 459
2026-06-21T09:42:01.9676893Z             },
2026-06-21T09:42:01.9677131Z             {
2026-06-21T09:42:01.9677473Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.9677726Z               "line": 505
2026-06-21T09:42:01.9677973Z             },
2026-06-21T09:42:01.9678207Z             {
2026-06-21T09:42:01.9678545Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.9678793Z               "line": 928
2026-06-21T09:42:01.9679075Z             },
2026-06-21T09:42:01.9679300Z             {
2026-06-21T09:42:01.9679639Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:42:01.9679884Z               "line": 302
2026-06-21T09:42:01.9680108Z             },
2026-06-21T09:42:01.9680352Z             {
2026-06-21T09:42:01.9680633Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9680876Z               "line": 5675
2026-06-21T09:42:01.9681105Z             },
2026-06-21T09:42:01.9681339Z             {
2026-06-21T09:42:01.9681635Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9681874Z               "line": 5720
2026-06-21T09:42:01.9682110Z             },
2026-06-21T09:42:01.9682337Z             {
2026-06-21T09:42:01.9682619Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9682876Z               "line": 5857
2026-06-21T09:42:01.9683123Z             },
2026-06-21T09:42:01.9683352Z             {
2026-06-21T09:42:01.9683634Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9683877Z               "line": 5878
2026-06-21T09:42:01.9684107Z             },
2026-06-21T09:42:01.9684334Z             {
2026-06-21T09:42:01.9684621Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9684868Z               "line": 5901
2026-06-21T09:42:01.9685106Z             },
2026-06-21T09:42:01.9685336Z             {
2026-06-21T09:42:01.9685628Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9685871Z               "line": 5928
2026-06-21T09:42:01.9686105Z             }
2026-06-21T09:42:01.9686339Z           ]
2026-06-21T09:42:01.9686572Z         },
2026-06-21T09:42:01.9686805Z         "int": {
2026-06-21T09:42:01.9687055Z           "complete": false,
2026-06-21T09:42:01.9687303Z           "evidence": []
2026-06-21T09:42:01.9687534Z         },
2026-06-21T09:42:01.9687770Z         "unit": {
2026-06-21T09:42:01.9688014Z           "complete": true,
2026-06-21T09:42:01.9688261Z           "evidence": [
2026-06-21T09:42:01.9688500Z             {
2026-06-21T09:42:01.9688862Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:42:01.9689181Z               "line": 259
2026-06-21T09:42:01.9689415Z             },
2026-06-21T09:42:01.9689644Z             {
2026-06-21T09:42:01.9689978Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:42:01.9690223Z               "line": 657
2026-06-21T09:42:01.9690453Z             },
2026-06-21T09:42:01.9690678Z             {
2026-06-21T09:42:01.9691031Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:42:01.9691274Z               "line": 1107
2026-06-21T09:42:01.9691499Z             },
2026-06-21T09:42:01.9691731Z             {
2026-06-21T09:42:01.9692018Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9692371Z               "line": 7565
2026-06-21T09:42:01.9692590Z             }
2026-06-21T09:42:01.9692818Z           ]
2026-06-21T09:42:01.9693141Z         }
2026-06-21T09:42:01.9693373Z       }
2026-06-21T09:42:01.9693602Z     },
2026-06-21T09:42:01.9693817Z     {
2026-06-21T09:42:01.9694075Z       "id": "REQ-WHOAMI-1",
2026-06-21T09:42:01.9698468Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-21T09:42:01.9698731Z       "requiredStages": [
2026-06-21T09:42:01.9699050Z         "doc",
2026-06-21T09:42:01.9699299Z         "impl",
2026-06-21T09:42:01.9699528Z         "unit"
2026-06-21T09:42:01.9699756Z       ],
2026-06-21T09:42:01.9699994Z       "stages": {
2026-06-21T09:42:01.9700233Z         "doc": {
2026-06-21T09:42:01.9700478Z           "complete": true,
2026-06-21T09:42:01.9700721Z           "evidence": [
2026-06-21T09:42:01.9700952Z             {
2026-06-21T09:42:01.9701219Z               "path": "CONTEXT.md",
2026-06-21T09:42:01.9701458Z               "line": 707
2026-06-21T09:42:01.9701696Z             }
2026-06-21T09:42:01.9701924Z           ]
2026-06-21T09:42:01.9702149Z         },
2026-06-21T09:42:01.9702384Z         "impl": {
2026-06-21T09:42:01.9702641Z           "complete": true,
2026-06-21T09:42:01.9702888Z           "evidence": [
2026-06-21T09:42:01.9703111Z             {
2026-06-21T09:42:01.9703410Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9703653Z               "line": 3190
2026-06-21T09:42:01.9703876Z             },
2026-06-21T09:42:01.9704110Z             {
2026-06-21T09:42:01.9704406Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9704659Z               "line": 3218
2026-06-21T09:42:01.9704897Z             }
2026-06-21T09:42:01.9705126Z           ]
2026-06-21T09:42:01.9705359Z         },
2026-06-21T09:42:01.9705589Z         "int": {
2026-06-21T09:42:01.9705846Z           "complete": false,
2026-06-21T09:42:01.9706092Z           "evidence": []
2026-06-21T09:42:01.9706324Z         },
2026-06-21T09:42:01.9706563Z         "unit": {
2026-06-21T09:42:01.9706820Z           "complete": true,
2026-06-21T09:42:01.9707057Z           "evidence": [
2026-06-21T09:42:01.9707288Z             {
2026-06-21T09:42:01.9707573Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9707817Z               "line": 7847
2026-06-21T09:42:01.9708055Z             },
2026-06-21T09:42:01.9708273Z             {
2026-06-21T09:42:01.9708569Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:42:01.9708821Z               "line": 7900
2026-06-21T09:42:01.9709120Z             }
2026-06-21T09:42:01.9709377Z           ]
2026-06-21T09:42:01.9709600Z         }
2026-06-21T09:42:01.9709830Z       }
2026-06-21T09:42:01.9710060Z     }
2026-06-21T09:42:01.9710283Z   ],
2026-06-21T09:42:01.9710522Z   "findings": []
2026-06-21T09:42:01.9710751Z }
